pthread_create的正确参数是什么

时间:2015-01-26 10:29:34

标签: c pthreads function-pointers

我看过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]);

我也进行了测试,但没有&

但这是正确的方法吗?

1 个答案:

答案 0 :(得分:3)

简短回答:两者都是正确的。


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也是正确的,因为函数名称会自动转换为函数指针。