C++ C++;Pthreads。pthread_create的参数
关于函数C++ C++;Pthreads。pthread_create的参数,c++,pthreads,function-pointers,void-pointers,C++,Pthreads,Function Pointers,Void Pointers,关于函数pthread\u create,有几点我不了解 这是标题 int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg); 首先,我不熟悉void*(*start\u
pthread\u create
,有几点我不了解
这是标题
int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*),
void *restrict arg);
首先,我不熟悉void*(*start\u routine)(void*),
的语法。我知道这里要求的参数是返回void*
的函数名,并将一个void*
作为其参数。大概pthread\u create
会将该函数称为start\u例程
。我想这个参数应该是一个函数指针?如果是这样的话,是什么关键语法元素使其如此
其次,为什么pthread\u创建的期望函数的返回类型为void*
?pthread\u create
能够对未知类型的数据做什么
void*(*start\u例程)(void*)
是一个函数指针。关于它的一切都是“关键语法”,但特别是语法(*ptrname)(args)
pthreads不会对start例程返回的void*执行任何操作,只会将其返回给您。查看pthread\u join
的手册页,了解它是如何返回给您的
void*(*start\u例程)(void*)
是一个函数指针。关于它的一切都是“关键语法”,但特别是语法(*ptrname)(args)
pthreads不会对start例程返回的void*执行任何操作,只会将其返回给您。查看pthread\u join
的手册页,了解它是如何返回给您的
应按以下顺序读取void*(*start_例程)(void*)
:
start\u例程
-参数的名称
*start_例程
-所以这个参数是一个指针
(*start_例程)(…)
-啊哈,这是指向函数的指针
(*start_例程)(void*)
-我们现在知道函数的参数
void*(*start\u例程)(void*)
-最后,这告诉我们函数的返回类型
void*
参数接收传递给arg
的任何内容-因此,如果需要将任何“输入”传递给新线程,这是一种方法
生成的void*
用作线程的退出状态(作为显式调用pthread\u exit()
的替代方法)。您可以通过pthread\u join()
获取此状态。应按以下顺序读取void*(*start\u例程)(void*)
:
start\u例程
-参数的名称
*start_例程
-所以这个参数是一个指针
(*start_例程)(…)
-啊哈,这是指向函数的指针
(*start_例程)(void*)
-我们现在知道函数的参数
void*(*start\u例程)(void*)
-最后,这告诉我们函数的返回类型
void*
参数接收传递给arg
的任何内容-因此,如果需要将任何“输入”传递给新线程,这是一种方法
生成的void*
用作线程的退出状态(作为显式调用pthread\u exit()
的替代方法)。您可以通过pthread\u join()
获得此状态