日本語 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.2-RELEASE-K, 8.0-RELEASE-K は、プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、全翻訳済み)
6.4-STABLE-K, 7.2-STABLE-K, 8.0-STABLE-K は現在、 作成中で日々更新されています。 最新の snapshots を元に作成しています。
PTHREAD(3) FreeBSD Library Functions Manual PTHREAD(3)
名称
pthread - POSIX スレッド関数
解説
POSIX スレッドは、プロセスで制御の複数のフロー (スレッド) を要求するアプ
リケーションをサポートする関数です。マルチスレッドは、プログラムのパフォ
ーマンスを改善するために使用されます。このセクションでは、POSIX スレッド
関数の概要について以下のグループに分けて説明します。
+o スレッドルーチン
+o 属性オブジェクトルーチン
+o Mutex ルーチン
+o 条件変数ルーチン
+o 読み書きロックルーチン
+o スレッド固有コンテキストルーチン
+o クリーンアップルーチン
スレッドルーチン
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void
*(*start_routine)(void *), void *arg)
実行の新しいスレッドを作成します。
int pthread_detach(pthread_t thread)
スレッドに削除マークを付けます。
int pthread_equal(pthread_t t1, pthread_t t2)
2 つのスレッド ID を比較します。
void pthread_exit(void *value_ptr)
呼び出しスレッドを終了します。
int pthread_join(pthread_t thread, void **value_ptr)
呼び出しスレッドが、指定したスレッドの終了を待つようになり
す。
int pthread_once(pthread_once_t *once_control, void
(*init_routine)(void))
初期化ルーチンを 1 回呼び出します。
pthread_t pthread_self(void)
呼び出しスレッドのスレッド ID を戻します。
属性オブジェクトルーチン
int pthread_attr_destroy(pthread_attr_t *attr)
スレッドの属性オブジェクトを破壊します。
int pthread_attr_getinheritsched(pthread_attr_t *attr, int *inheritsched)
スレッドの属性オブジェクトから継承スケジューリング属性を入
手します。
int pthread_attr_getschedparam(pthread_attr_t *attr, struct sched_param
*param)
スレッドの属性オブジェクトからスケジューリングパラメータ属
性を入手します。
int pthread_attr_getschedpolicy(pthread_attr_t *attr, int *policy)
スレッドの属性オブジェクトからスケジューリング方針属性を入
手します。
int pthread_attr_getscope(pthread_attr_t *attr, int *contentionscope)
スレッドの属性オブジェクトからコンテンション範囲属性を入手
します。
int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize)
スレッドの属性オブジェクトからスタックサイズ属性を入手しま
す。
int pthread_attr_getstackaddr(pthread_attr_t *attr, void **stackaddr)
スレッドの属性オブジェクトからスタックアドレス属性を入手し
ます。
int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate)
スレッドの属性オブジェクトから切り離し状態属性を入手しま
す。
int pthread_attr_init(pthread_attr_t *attr)
スレッドの属性オブジェクトをデフォルト値で初期化します。
int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched)
スレッドの属性オブジェクトで継承スケジューリング属性を設定
します。
int pthread_attr_setschedparam(pthread_attr_t *attr, struct sched_param
*param)
スレッドの属性オブジェクトでスケジューリングパラメータ属性
を設定します。
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy)
スレッドの属性オブジェクトでスケジューリング方針属性を設定
します。
int pthread_attr_setscope(pthread_attr_t *attr, int contentionscope)
スレッドの属性オブジェクトでコンテンション範囲属性を設定し
ます。
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize)
スレッドの属性オブジェクトでスタックサイズ属性を設定しま
す。
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr)
スレッドの属性オブジェクトでスタックアドレス属性を設定しま
す。
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)
スレッドの属性オブジェクトで切り離し状態を設定します。
MUTEX ルーチン
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr)
MUTEX 属性オブジェクトを破壊します。
int pthread_mutexattr_init(pthread_mutexattr_t *attr)
MUTEX 属性オブジェクトをデフォルト値で初期化します。
int pthread_mutex_destroy(pthread_mutex_t *mutex)
MUTEX を破壊します。
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t
*attr)
指定された属性で MUTEX を初期化します。
int pthread_mutex_lock(pthread_mutex_t *mutex)
MUTEX をロックし、MUTEX が使用できるようになるまでブロック
します。
int pthread_mutex_trylock(pthread_mutex_t *mutex)
MUTEX をロックしようとしますが、現行スレッドも含めた別のス
レッドで MUTEX がロックされている場合はブロックしません。
int pthread_mutex_unlock(pthread_mutex_t *mutex)
MUTEX のロックを解除します。
条件変数ルーチン
int pthread_condattr_init(pthread_condattr_t *attr)
条件変数属性オブジェクトをデフォルト値で初期化します。
int pthread_condattr_destroy(pthread_condattr_t *attr)
条件変数属性オブジェクトを破壊します。
int pthread_cond_broadcast(pthread_cond_t *cond)
指定された条件変数で現在ブロックされている、すべてのスレッ
ドのブロックを解除します。
int pthread_cond_destroy(pthread_cond_t *cond)
条件変数を破壊します。
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t
*attr)
指定された属性で条件変数を初期化します。
int pthread_cond_signal(pthread_cond_t *cond)
指定された条件変数でブロックされているスレッドの、最低 1 つ
のブロックを解除します。
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
const struct timespec *abstime)
指定された時間以内で条件を待機し、指定された MUTEX をロック
します。
int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *mutex)
条件を待機し、指定された MUTEX をロックします。
読み書きロックルーチン
int pthread_rwlock_destroy(pthread_rwlock_t *lock)
読み書きロックオブジェクトを破壊します。
int pthread_rwlock_init(pthread_rwlock_t *lock, const pthread_rwlockat-
tr_t *attr)
読み書きロックオブジェクトを初期化します。
int pthread_rwlock_rdlock(pthread_rwlock_t *lock)
読み書きロックを読込み用にロックし、ロックを取得できるまで
ブロックします。
int pthread_rwlock_tryrdlock(pthread_rwlock_t *lock)
読み書きロックを読込み用にロックしようとしますが、ロックを
使用できない場合はブロックしません。
int pthread_rwlock_trywrlock(pthread_rwlock_t *lock)
読み書きロックを書込み用にロックしようとしますが、ロックを
使用できない場合はブロックしません。
int pthread_rwlock_unlock(pthread_rwlock_t *lock)
読み書きロックを解除します。
int pthread_rwlock_wrlock(pthread_rwlock_t *lock)
読み書きロックを書込み用にロックし、ロックを取得できるまで
ブロックします。
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *attr)
読み書きロック属性オブジェクトを破壊します。
int pthread_rwlockattr_getpshared(pthread_rwlockattr_t *attr, int
*pshared)
プロセスで共有している、読み書きロック属性オブジェクトの設
定を取り出します。
int pthread_rwlockattr_init(pthread_rwlockattr_t *attr)
読み書きロック属性オブジェクトを初期化します。
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *attr, int
*pshared)
プロセスで共有している、読み書きロック属性オブジェクトの設
定を設定します。
スレッド固有コンテキストルーチン
int pthread_key_create(pthread_key_t *key, void (*routine)(void *))
スレッドに固有なデータキーを作成します。
int pthread_key_delete(pthread_key_t key)
スレッドに固有なデータキーを削除します。
void * pthread_getspecific(pthread_key_t key, void **value_ptr)
指定されたキーのスレッドに固有な値を入手します。
int pthread_setspecific(pthread_key_t key, const void *value_ptr)
指定されたキーのスレッドに固有な値を設定します。
クリーンアップルーチン
void pthread_cleanup_pop(int execute)
呼び出しスレッドのキャンセルクリーンアップスタックの最上位
でルーチンを削除し、オプションで起動します。
void pthread_cleanup_push(void (*routine)(void *), void *routine_arg)
指定されたキャンセルクリーンアップハンドラを呼び出しスレッ
ドのキャンセルスタックにプッシュします。
インストレーション
現在の FreeBSD POSIX スレッドシステムは、スレッドセーフな libc 関数とス
レッド関数を含むライブラリ libc_r で構築されています。このライブラリは、
スレッドアプリケーションの libc を置き換えます。
デフォルトでは、 libc_r は'make world' の一部として構築されます。 libc_r
の構築を無効にするには、'-DNOLIBC_R' オプションを make(1) に指定する必要
があります。
gcc には FreeBSD に固有なオプションが追加されており、スレッドプロセスのリ
ンクが簡単になっています。 gcc -pthread を実行すると、 libc ではなく
libc_r にスレッドプロセスがリンクされます。
規格
接頭語 pthread_ が付き、接尾語 _np や接頭語 pthread_rwlock が付いていない
libc_r の関数は、IEEE (``POSIX'') Std 1003.1 Second Eition 1996-07-12 に
準拠しています。
接頭語 pthread_ と接尾語 _np が付いている libc_r の関数は、POSIX スレッド
の移植不可能なエクステンションです。
接頭語 pthread_rwlock が付いている libc_r の関数は、Single UNIX Specifi-
cation, Version 2 の The Open Group が作成したエクステンションです。
4th Berkeley Distribution September 10, 1998 4