屏障也有属性。可以使用pthread_barrierattr_init
函数对屏障属性对象进行初始化,用pthread_barrierattr_destroy
函数对屏障属性对象进行反初始化。
#include <pthread.h>
int pthread_barrierattr_init(pthread_barrierattr_t *attr);
int pthread_barrierattr_destroy(pthread_barrierattr_t *attr);
//两个函数的返回值:若成功,返回0;否则,返回错误编号
目前定义的屏障属性只有进程共享属性,它控制着屏障是可以被多进程的线程使用,还是只能被初始化屏障的进程内的多线程使用。与其他属性对象一样,有一个获取属性值的函数pthread_barrierattr_getpshared
和一个设置属性值的函数pthread_barrierattr_ setpshared
。
#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);
//两个函数的返回值:若成功,返回0;否则,返回错误编号
进程共享属性的值可以是 PTHREAD_PROCESS_SHARED
(多进程中的多个线程可用),也可以是PTHREAD_PROCESS_PRIVATE
(只有初始化屏障的那个进程内的多个线程可用)。