int pthread_mutex_init的设置互斥锁类型的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了int pthread_mutex_init的设置互斥锁类型的属性相关的知识,希望对你有一定的参考价值。

参考技术A

pthread_mutexattr_settype(3C)可用来设置互斥锁的type属性。
pthread_mutexattr_settype 语法
#include <pthread.h>
int pthread_mutexattr_settype(pthread_mutexattr_t *attr , int type);
类型属性的缺省值为 PTHREAD_MUTEX_DEFAULT。
type参数指定互斥锁的类型。以下列出了有效的互斥锁类型:
PTHREAD_MUTEX_NORMAL 描述: 此类型的互斥锁不会检测死锁。如果线程在不首先解除互斥锁的情况下尝试重新锁定该互斥锁,则会产生死锁。尝试解除由其他线程锁定的互斥锁会产生不确定的行为。如果尝试解除未锁定的互斥锁,则会产生不确定的行为。
PTHREAD_MUTEX_ERRORCHECK 描述: 此类型的互斥锁可提供错误检查。如果线程在不首先解除锁定互斥锁的情况下尝试重新锁定该互斥锁,则会返回错误。如果线程尝试解除锁定的互斥锁已经由其他线程锁定,则会返回错误。如果线程尝试解除未锁定的互斥锁,则会返回错误。
PTHREAD_MUTEX_RECURSIVE 描述: 如果线程在不首先解除锁定互斥锁的情况下尝试重新锁定该互斥锁,则可成功锁定该互斥锁。 与 PTHREAD_MUTEX_NORMAL 类型的互斥锁不同,对此类型互斥锁进行重新锁定时不会产生死锁情况。多次锁定互斥锁需要进行相同次数的解除锁定才可以释放该锁,然后其他线程才能获取该互斥锁。如果线程尝试解除锁定的互斥锁已经由其他线程锁定,则会返回错误。 如果线程尝试解除未锁定的互斥锁,则会返回错误。
PTHREAD_MUTEX_DEFAULT 描述: 如果尝试以递归方式锁定此类型的互斥锁,则会产生不确定的行为。对于不是由调用线程锁定的此类型互斥锁,如果尝试对它解除锁定,则会产生不确定的行为。对于尚未锁定的此类型互斥锁,如果尝试对它解除锁定,也会产生不确定的行为。允许在实现中将该互斥锁映射到其他互斥锁类型之一。对于 Solaris 线程,PTHREAD_PROCESS_DEFAULT 会映射到 PTHREAD_PROCESS_NORMAL。

pthread_mutexattr_settype 返回值
如果运行成功,pthread_mutexattr_settype 函数会返回零。否则,将返回用于指明错误的错误号。
EINVAL 描述: 值为 type 无效。EINVAL 描述: attr 指定的值无效。

ubuntu下 pthread_mutex_init man中查不到

问题:

  如题所述,包括pthread_mutex_init 和 pthread_mutex_lock 这些函数都找不到

解决办法:

  安装manpages:manpages-posix-dev

  Mint@Ubuntu: sudo apt-get install manpages-posix-dev 

结果:

   再用man 手册查看上述函数时,就可以看到函数的详细描述,原因是因为man手册中默认没有安装 关于posix标准的文档

以上是关于int pthread_mutex_init的设置互斥锁类型的属性的主要内容,如果未能解决你的问题,请参考以下文章

int pthread_mutex_init的获取互斥锁的范围

pthread_mutex_init返回值22代表啥含义

ubuntu没有man pthread_mutex_init

ubuntu下 pthread_mutex_init man中查不到

ubuntu下 pthread_mutex_init man中查不到

互斥锁 pthread_mutex_init()函数