2015-01-26 2 views
2

를 앞서 pthread_create 올바른 인수 무엇입니까 나는 그들이 온라인으로 사용하고 있지 않은 것을 보았다. & :나는 그들이 사용하고 하단에있는 예에서 <a href="http://man7.org/linux/man-pages/man3/pthread_create.3.html" rel="nofollow">pthread_create</a></p> <p>의 문서를 본

pthread_create(&tinfo[tnum].thread_id, &attr, thread_start, &tinfo[tnum]); 

나는 또한 테스트를 거쳤으며 &없이 작동합니다.

그러나 올바른 방법은 무엇입니까?

답변

3

짧은 답변 : 둘 다 맞습니다.


pthread_create의 서명은 다음과 같습니다

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, 
         void *(*start_routine) (void *), void *arg); 

그래서 start_routinevoid * 인자를 가지고 void *을 반환하는 함수의 포인터이다.

질문으로 돌아가서 thread_start은 함수 이름이므로 &thread_start은 올바른 함수 포인터입니다.

그러나 함수 이름이 함수 포인터로 자동 변환되기 때문에 thread_start도 정확합니다.