PTHREAD_BARRIERATTR(3) | FreeBSD Library Functions Manual | PTHREAD_BARRIERATTR(3) |
名称
pthread_barrierattr_destroy, pthread_barrierattr_getpshared, pthread_barrierattr_init, pthread_barrierattr_setpshared — バリア属性オブジェクトを操作するライブラリ
POSIX Threads Library (libpthread, -lpthread)書式
#include < pthread.h> int
pthread_barrierattr_destroy( pthread_barrierattr_t *attr);
int
pthread_barrierattr_getpshared( const pthread_barrierattr_t *attr, int *pshared);
int
pthread_barrierattr_init( pthread_barrierattr_t *attr);
int
pthread_barrierattr_setpshared( pthread_barrierattr_t *attr, int pshared);
解説
pthread_barrierattr_init() 関数は、デフォルトの属性で attr を初期化します。 pthread_barrierattr_destroy() 関数は、 attr を破壊して、その代わりに割り付けられたどんなリソースも開放します。pthread_barrierattr_getpshared() 関数は、 attr で指定されたプロセス共用属性の値を pshared によって指されたメモリ領域に置きます。 pthread_barrierattr_setpshared() 関数は、 attr のプロセス共用属性を pshared で指定された値に設定します。引数 pshared は、次の値の 1 つを持っているかもしれません:
- PTHREAD_PROCESS_PRIVATE
- それがアタッチされるバリアオブジェクトは、オブジェクトを作成したものと同じプロセスでスレッドによってアクセスされるだけかもしれません。
- PTHREAD_PROCESS_SHARED
- それがアタッチされるバリアオブジェクトは、オブジェクトを作成したもの以外のプロセスでスレッドによってアクセスされるかもしれません。
戻り値
成功すれば、これらのすべての関数は、0 を返します。そうでなければ、エラーを示すエラー番号が返されます。これらの関数のいずれも EINTR を返しません。
エラー
pthread_barrierattr_destroy(), pthread_barrierattr_getpshared() と pthread_barrierattr_setpshared() 関数は、次の場合に失敗します:- [ EINVAL]
- attr によって指定された値が無効です。
The pthread_barrierattr_init() 関数は、次の場合に失敗します:
- [ ENOMEM]
- バリア属性オブジェクト attr を初期化するためのメモリが不十分です。
pthread_barrierattr_setpshared() 関数は、次の場合に失敗します:
- [ EINVAL]
- pshared で指定された値が、許された値の 1 つではありません。
歴史
pthread_barrierattr_*() 関数は、 FreeBSD 5.2 の N:M Threading Library (libkse, -lkse) と FreeBSD 5.3 の 1:1 Threading Library (libthr, -lthr) ではじめて登場しました。バグ
バリアの実装は、 IEEE Std 1003.2 (“POSIX.2”) に完全に適合していません、なぜならプロセスで共有される属性が 1:1 Threading Library (libthr, -lthr) と N:M Threading Library (libkse, -lkse) で無視されるからです。 PTHREAD_PROCESSES_PRIVATE でない何か他の値が pthread_barrierattr_setpshared() への呼び出しで指定されるなら、 EINVAL を返します。February 19, 2004 | FreeBSD |