任何人都可以在这样调用时逐步解释为什么这样NULL
的参数(指针)pthread_create
:
pthread_create(&id_thread1,NULL,thread1,NULL);
导致thread1
?的默认属性
我知道该pthread.h
文件是这里的关键因素。但不幸的是,我不明白为什么;代码对我来说太复杂了。
提前致谢!
签名pthread_create
为:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
第二个参数是一个pthread_attr_t*
指针。这允许您使用对象设置线程的各种属性,例如调度策略或线程堆栈大小pthread_attr_t
。如果attr
是NULL
则使用默认属性。
第四个参数只是一个指针,它可以指向线程开始时void*
要传递的任意用户数据。start_routine
如果arg
是NULL
,则传递一个空指针。
[...] 为什么这样的参数 [...] 会导致 thread1 的默认属性?
因为 pthread 规范要求如果作为此特定函数的参数(而不是“参数”)NULL
传入,情况就是如此。