1

任何人都可以在这样调用时逐步解释为什么这样NULL的参数(指针)pthread_create

pthread_create(&id_thread1,NULL,thread1,NULL);

导致thread1?的默认属性

我知道该pthread.h文件是这里的关键因素。但不幸的是,我不明白为什么;代码对我来说太复杂了。

提前致谢!

4

2 回答 2

4

签名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。如果attrNULL则使用默认属性。

第四个参数只是一个指针,它可以指向线程开始时void*要传递的任意用户数据。start_routine如果argNULL,则传递一个空指针。

于 2013-01-18T16:27:14.223 回答
0

[...] 为什么这样的参数 [...] 会导致 thread1 的默认属性?

因为 pthread 规范要求如果作为此特定函数的参数(而不是“参数”)NULL传入,情况就是如此。

于 2013-01-18T16:26:10.303 回答