我看过pthread_create的文档
在底部的示例中,他们正在使用:
pthread_create(&tinfo[tnum].thread_id, &attr, &thread_start, &tinfo[tnum]);
&thread_start
- 和 &
但是在其他示例中,我在网上看到了他们没有使用的信息&
:
pthread_create(&tinfo[tnum].thread_id, &attr, thread_start, &tinfo[tnum]);
我也进行了测试,没有它也可以工作&
。
但是,哪种方法是正确的呢?
简短的回答:两者都是正确的。
的签名pthread_create
是:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
因此start_routine
,带有void *
参数并返回的函数指针也是如此void *
。
回到您的问题,我假设thread_start
是函数的名称,&thread_start
正确的函数指针也是如此。
但是,thread_start
也是正确的,因为函数名称会自动转换为函数指针。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句