多线程编程指南

设置互斥锁的范围

pthread_mutexattr_setpshared(3C) 可用来设置互斥锁变量的作用域。

pthread_mutexattr_setpshared 语法

int	pthread_mutexattr_setpshared(pthread_mutexattr_t *mattr,

    int pshared);
#include <pthread.h>



pthread_mutexattr_t mattr;

int ret;



ret = pthread_mutexattr_init(&mattr);

/*

 * resetting to its default value: private

 */

ret = pthread_mutexattr_setpshared(&mattr,

     PTHREAD_PROCESS_PRIVATE);

互斥锁变量可以是进程专用的(进程内)变量,也可以是系统范围内的(进程间)变量。要在多个进程中的线程之间共享互斥锁,可以在共享内存中创建互斥锁,并将 pshared 属性设置为 PTHREAD_PROCESS_SHARED。 此行为与最初的 Solaris 线程实现中 mutex_init() 中的 USYNC_PROCESS 标志等效。

如果互斥锁的 pshared 属性设置为 PTHREAD_PROCESS_PRIVATE,则仅有那些由同一个进程创建的线程才能够处理该互斥锁。

pthread_mutexattr_setpshared 返回值

pthread_mutexattr_setpshared() 成功完成之后会返回零。其他任何返回值都表示出现了错误。如果出现以下情况,该函数将失败并返回对应的值。


EINVAL

描述:

mattr 指定的值无效。