在以下code.A 互斥是initialized.what是NULL的意义。互斥初始化 - (UNIX)
pthread_mutex_init(&a->monitor,NULL);
我想知道为什么我们传递NULL作为第二个参数。
在以下code.A 互斥是initialized.what是NULL的意义。互斥初始化 - (UNIX)
pthread_mutex_init(&a->monitor,NULL);
我想知道为什么我们传递NULL作为第二个参数。
第二个参数是指向pthread_mutexattr_t
结构的指针,它可以让您调整互斥锁的行为; NULL意味着“这里没有特殊的选项,使用默认的互斥体行为。”
大多数互斥选项仅在边缘情况下有用(避免优先级反转死锁,共享进程之间的互斥量而不是线程),更有用的(例如递归控制)仅在2008版POSIX中标准化,意味着你不能依靠他们的跨平台存在。 paxdiablo的答案有一个全面的列表。
@ Zack- Thankyou – Pavitar 2010-09-09 05:45:42
在[POSIX'pthreads.h' spec](http://www.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html)中有一个列表 - 请参阅以'pthread_mutexattr_' – caf 2010-09-09 06:26:54
它们没有很差的标准化,IEEE/OG与ISO的标准一致。而且大多数情况下,这并没有用,你说得对。但是,他们使用它们,但是它们可能是边缘案例。 – paxdiablo 2010-09-09 06:29:56
pthread_mutex_init的第二个参数将pthread_mutexattr_t作为参数。 可以使用第二个参数来指定互斥体的属性,以及是否使用其默认的互斥体属性。
NULL
作为一个互斥属性,为您提供了一个实现定义的默认属性。如果您想知道您可以使用属性做什么,请查看following reference并按照SEE ALSO
部分中的pthread_mutexattr_*
链接进行操作。
这是标准的第7期,1003.1-2008。起点是here。单击左下角的Headers
将允许您导航到特定功能(包括pthreads.h
)。
的属性,可以设置或获取:
而且,当然也有init and destroy calls,它们与特定属性没有直接关系,但用于创建它们。
难道你不只是阅读pthread的手册页:http://www.rootr.net/man/man/pthread_mutex_init/3 – 2010-09-09 07:41:12
@Martin约克 - 谢谢你的信息。下次我会记住这一点。 – Pavitar 2010-09-09 07:45:37