vy3*_*y32 25 attributes mutex pthreads
函数pthread_mutex_init允许您指定指向属性的指针.但我还没有找到pthread属性的详细解释.我总是提供NULL.这个论点有用吗?
文档,对于那些忘记它的人:
PTHREAD_MUTEX_INIT(3)BSD库函数手册
PTHREAD_MUTEX_INIT(3)名称pthread_mutex_init - 创建互斥锁
概要
Run Code Online (Sandbox Code Playgroud)#include <pthread.h> int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);说明pthread_mutex_init()函数创建一个新的互斥锁,其属性由attr指定.如果attr为NULL,则使用默认属性.
pax*_*blo 36
查找该信息的最佳位置来自POSIX标准页面.
一个NULL互斥锁属性为您提供了一个实现定义的默认属性.如果您想知道如何处理属性,请查看以下参考资料,并按照pthread_mutexattr_*本SEE ALSO节中的链接进行操作.通常,默认值是一组合理的属性,但它可能因平台而异,因此我更愿意显式创建具有已知属性的互斥锁(更好的可移植性).
这是针对标准的问题7,即1003.1-2008.起点就在这里.单击Headers左下角将允许您导航到特定功能(包括pthreads.h).
这些属性允许您设置或获取:
而且,为了完整性,还有init和destroy调用,与特定属性没有直接关系,但用于创建它们.
所有互斥属性都通过以下形式的函数设置在互斥属性对象中:
int pthread_mutexattr_setname(pthread_attr_t *attr, Type t);
Run Code Online (Sandbox Code Playgroud)
所有互斥属性都通过以下形式的函数从互斥属性对象中检索:
int pthread_mutexattr_getname(const pthread_attr_t *attr, Type *t);
Run Code Online (Sandbox Code Playgroud)
其中名称和类型的定义如下表所示:
Type and Name Description and Value(s)
int protocol Define the scheduling classes for mutex locks
PTHREAD_PRIO_NONE,PTHREAD_PRIO_PROTECT,
PTHREAD_PRIO_INHERIT
int pshared Defines whether a mutex is shared with other processes.
PTHREAD_PROCESS_SHARED, PTHREAD_PROCESS_PRIVATE
int prioceiling Used for mutex attribute priority ceiling values.
See POSIX.1 section 13
int type Application defined mutex locking
PTHREAD_MUTEX_NORMAL,PTHREAD_MUTEX_RECURSIVE,
PTHREAD_MUTEX_ERRORCHECK,PTHREAD_MUTEX_DEFAULT
Run Code Online (Sandbox Code Playgroud)