【发布时间】:2019-03-01 03:30:42
【问题描述】:
在研究uthreads(来自pthreads)时,我遇到了以下代码行:
uthread_t uthread_create (void* (*start_proc)(void*), void* start_arg)
我不确定uthread_create() 将什么作为第一个参数。它是否将指向没有特定类型的指针转换为指向 start_proc 类型的指针?有人可以澄清一下吗?
【问题讨论】:
在研究uthreads(来自pthreads)时,我遇到了以下代码行:
uthread_t uthread_create (void* (*start_proc)(void*), void* start_arg)
我不确定uthread_create() 将什么作为第一个参数。它是否将指向没有特定类型的指针转换为指向 start_proc 类型的指针?有人可以澄清一下吗?
【问题讨论】:
第一个参数是一个函数指针。 start_proc 指向一个函数,该函数接受一个 void * 参数并返回一个 void *,在本例中是线程的入口点。另外,uthread_create 的第二个参数是调用时将传递给start_proc 的参数。
这样的函数会满足函数指针:
void *my_thread(void *p)
{
char *s = p;
printf("s=%s", s);
return NULL;
}
您可以像这样拨打uthread_create:
uthread_t tid;
char str[] = "test string";
tid = uthread_create(my_thread, str);
【讨论】: