pthread_arrierattr_getpshared 或 pthread_arrierattr_setpshared 子例程

用途

获取和设置 barrier 属性对象的进程共享属性。

语法

#include <pthread.h>

int pthread_barrierattr_getpshared(const pthread_barrierattr_t *
       restrict attr, int *restrict pshared);
int pthread_barrierattr_setpshared(pthread_barrierattr_t *attr,
       int pshared); 

描述

pthread_arrierattr_getpshared 子例程从 attr 参数引用的属性对象中获取进程共享属性的值。 pthread_arrierattr_setpshared 子例程在 attr 参数引用的已初始化属性对象中设置进程共享属性。

process-shared 属性设置为 PTHREAD_PROCESS_SHARED ,以允许对分配了 barrier 的内存具有访问权的任何线程操作 barrier。 如果 process-shared 属性为 PTHREAD_PROCESS_PRIVATE,那么只有在与初始化 barrier 的线程相同的进程中创建的线程才能对 barrier 进行操作; 如果不同进程的线程尝试对此类 barrier 进行操作,那么行为未定义。 属性的缺省值为 PTHREAD_PROCESS_PRIVATE。 在 pthread.h 文件中定义了两个常量 PTHREAD_PROCESS_SHAREDPTHREAD_PROCESS_PRIVATE

其他属性,其缺省值以及用于获取和设置这些属性值的关联函数的名称都是由实现定义的。

返回值

如果成功, pthread_arrierattr_getpshared 子例程将返回零并将进程共享属性 attr 的值存储到 pshared 参数引用的对象中。 否则,将返回错误号以指示错误。

如果成功, pthread_arrierattr_setpshared 子例程将返回零; 否则,将返回错误号以指示错误。

错误代码

在下列情况下,这些函数可能会失败:

描述
EINVAL attr 指定的值无效。

在下列情况下, pthread_arrierattr_setpshared 子例程将失败:

描述
EINVAL 为 process-shared 属性指定的新值不是其中一个合法值 PTHREAD_PROCESS_SHAREDPTHREAD_PROCESS_PRIVATE