日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
PTHREAD_MUTEXATTR(3) FreeBSD ライブラリ関数マニュアル PTHREAD_MUTEXATTR(3)
名称
pthread_mutexattr_init, pthread_mutexattr_destroy,
pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling,
pthread_mutexattr_setprotocol, pthread_mutexattr_getprotocol,
pthread_mutexattr_setpshared, pthread_mutexattr_getpshared,
pthread_mutexattr_setrobust, pthread_mutexattr_getrobust,
pthread_mutexattr_settype, pthread_mutexattr_gettype -- ミューテックス
(mutex) 属性操作
ライブラリ
POSIX スレッドライブラリ (libpthread, -lpthread)
書式
#include <pthread.h>
int
pthread_mutexattr_init(pthread_mutexattr_t *attr);
int
pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
int
pthread_mutexattr_setprioceiling(pthread_mutexattr_t *attr,
int prioceiling);
int
pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *attr,
int *prioceiling);
int
pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, int protocol);
int
pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict attr,
int *restrict protocol);
int
pthread_mutexattr_setpshared(pthread_mutexattr_t *attr, int shared);
int
pthread_mutexattr_getpshared(const pthread_mutexattr_t *attr,
int *shared);
int
pthread_mutexattr_setrobust(pthread_mutexattr_t *attr, int robust);
int
pthread_mutexattr_getrobust(pthread_mutexattr_t *attr, int *robust);
int
pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type);
int
pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict attr,
int *restrict type);
解説
ミューテックス (mutex) 属性は、pthread_mutex_init() へのパラメータを指定
するために使用されます。1 つの属性オブジェクトは、呼び出しの間の修正と共
に、または修正なしで pthread_mutex_init() への多数の呼び出しで使用できま
す。
pthread_mutexattr_init() 関数は、すべてのデフォルトミューテックス属性で
attr を初期化します。
pthread_mutexattr_destroy() 関数は、attr を破壊します。
pthread_mutexattr_setprioceiling() 関数は、PTHREAD_PRIO_PROTECT プロトコ
ルの下で実行されるスレッドによって使用されるミューテックスのための優先順
位の上限を設定します。
pthread_mutexattr_setprotocol() 関数は、ミューテックスを利用で従うプロト
コルを指定します。protocol 引数は、次の値の 1 つを取ることができます:
PTHREAD_PRIO_NONE このミューテックスを所有するスレッドの優先順位とス
ケジューリングは、そのミューテックスの所有権に影響
されません。
PTHREAD_PRIO_INHERIT 優先順位継承プロトコルを要求します、ここで、ミュー
テックスを所有しているスレッドは、このスレッドに
よって所有されるあらゆるミューテックスで待っている
すべてのスレッドの優先順位のうちで最高の優先順位で
実行されます。
PTHREAD_PRIO_PROTECT 優先順位継承プロトコルを要求します、ここで、ミュー
テックスを所有しているスレッドは、このスレッドに
よって所有されるあらゆるミューテックスで待っている
すべてのスレッドの優先順位または優先順位の上限のう
ちで最高の優先順位で実行されます。
pthread_mutexattr_setrobust() 関数は、ミューテックスの堅牢性 (robustness)
属性を指定します。robust 引数のために指定できる値は、次の通りです:
PTHREAD_MUTEX_STALLED ミューテックスを所有するスレッドが、ミューテックス
のロックを解除せずに終了するなら、特別なアクション
は、取られません。これは、他のスレッドがミューテッ
クスのロックを解除できないなら、デッドロックの原因
となるかもしれません。これは、デフォルト値です。
PTHREAD_MUTEX_ROBUST 堅牢 (robust) なミューテックスを所有するスレッド、
または所有するスレッドを含むプロセスが、ミューテッ
クスのロックを保持している間に終了するなら、ミュー
テックスを獲得する次のスレッドは、ロック関数からの
返り値 EOWNERDEAD によって終了に関して通知されま
す。次に、ミューテックスのロックの状態を修復するた
めに pthread_mutex_consistent(3) 使用することがで
きるか、または pthread_mutex_unlock(3) がミュー
テックスのロックを解除することができますが、使用で
ない状態に置かれます、ここで、ENOTRECOVERABLE エ
ラーの結果となり、それを獲得するためにすべてのさら
なる試みのいずれかです。
pthread_mutexattr_settype() 関数は、ミューテックスのタイプを設定します。
このタイプは、ミューテックスをロックまたはアンロックする呼び出しの振る舞
いに影響します。type 引数のために指定できる値は、次の通りです:
PTHREAD_MUTEX_NORMAL 再帰的なロックと、ロックが、現在のスレッドに
よって所有されていないとき、ロック解除の両方
で、対応する関数からエラーが返されます。これ
は、PTHREAD_MUTEX_ERRORCHECK と一致しますが、
POSIX によって強制されている振る舞いとは多少相
反しています。
PTHREAD_MUTEX_ERRORCHECK 再帰的ロックと、ロックが、現在のスレッドによっ
て所有されていないとき、ロック解除の両方で、対
応する関数からエラーが返されます。
PTHREAD_MUTEX_RECURSIVE 再帰的ロックは、許可されています。現在のスレッ
ドがロックの所有者ではないとき、ロックを解除し
ようと試み、エラーが返されます。
PTHREAD_MUTEX_DEFAULT FreeBSD の実装は、このタイプを
PTHREAD_MUTEX_ERRORCHECK タイプにマップします。
pthread_mutexattr_get*() 関数は、2 番目の関数パラメータによって指される位
置へ各関数名に相当する属性の値をコピーします。
戻り値
成功すれば、これらの関数は 0 を返します。そうでなければ、エラーを示すため
にエラー番号を返します。
エラー
pthread_mutexattr_init() 関数は、次の場合に失敗します:
[ENOMEM] メモリ不足。
pthread_mutexattr_destroy() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値。
pthread_mutexattr_setprioceiling() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値、または prioceiling が、無効の値。
pthread_mutexattr_getprioceiling() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値。
pthread_mutexattr_setprotocol() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値、または protocol が、無効の値。
pthread_mutexattr_getprotocol() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値。
pthread_mutexattr_setpshared() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値、または shared が、無効の値。
pthread_mutexattr_getpshared() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値。
pthread_mutexattr_settype() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値、または type が、無効の値。
pthread_mutexattr_gettype() 関数は、次の場合に失敗します:
[EINVAL] attr が、無効の値。
pthread_mutexattr_setrobust() 関数は、次の場合に失敗します:
[EINVAL] attr のための無効の値、または robust のための無効の
値。
pthread_mutexattr_getrobust() 関数は、次の場合に失敗します:
[EINVAL] attr のための無効の値。
関連項目
pthread_mutex_init(3)
規格
pthread_mutexattr_init() と pthread_mutexattr_destroy() 関数は、ISO/IEC
9945-1:1996 (``POSIX.1'') に適合しています。
pthread_mutexattr_setprioceiling(), pthread_mutexattr_getprioceiling(),
pthread_mutexattr_setprotocol(), pthread_mutexattr_getprotocol(),
pthread_mutexattr_setpshared(), pthread_mutexattr_getpshared(),
pthread_mutexattr_settype() と pthread_mutexattr_gettype() 関数は、
Version 2 of the Single UNIX Specification (``SUSv2'') に適合しています。
pthread_mutexattr_setrobust() と pthread_mutexattr_getrobust() 関数は、
Version 4 of the Single UNIX Specification (``SUSv4'')
FreeBSD 13.2 October 1, 2021 FreeBSD 13.2