スポンサーリンク

PTHREAD(3) FreeBSD ライブラリ関数マニュアル PTHREAD(3)

名称

pthread − POSIX スレッド関数

書式

#include <pthread.h>

解説

POSIX スレッドは、プロセス内でスレッド (thread) と呼ばれる制御の複数のフ ローを要求するアプリケーションをサポートする関数群です。マルチスレッド は、プログラムのパフォーマンスを改善するために使用されます。

このセクションでは、 POSIX スレッド関数の概要について以下のグループに分け て説明します。

 スレッドルーチン

属性オブジェクトルーチン

mutex ルーチン

条件変数ルーチン

読取り / 書込みロックルーチン

スレッド固有コンテキストルーチン

クリーンアップルーチン

スレッドルーチン

         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_cancel(pthread_t thread)
スレッドの実行を取り消します。

int pthread_once(pthread_once_t *once_control, void (*init_routine)(void))
初期化ルーチンを一度だけ呼び出します。

pthread_t pthread_self(void)
呼び出しているスレッドの ID を返します。

属性オブジェクトルーチン

         int pthread_attr_destroy(pthread_attr_t *attr)

スレッドの属性オブジェクトを破壊します。

int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inheritsched)
スレッドの属性オブジェクトから継承スケジューリング属性 を取得します。

int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param)
スレッドの属性オブジェクトからスケジューリングパラメー タ属性を取得します。

int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy)
スレッドの属性オブジェクトからスケジューリング方針属性 を取得します。

int pthread_attr_getscope(const pthread_attr_t *attr, int *contentionscope)
スレッドの属性オブジェクトからコンテンション範囲属性を 取得します。

int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize)
スレッドの属性オブジェクトからスタックサイズ属性を取得 します。

int pthread_attr_getstackaddr(const pthread_attr_t *attr, void **stackaddr)
スレッドの属性オブジェクトからスタックアドレス属性を取 得します。

int pthread_attr_getdetachstate(const 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, const 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_rwlockattr_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(const 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)
指定されたキーのスレッド固有の値を取得します。

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’ の一部として構築されます。この構 築を無効にするには、 make(1) に ’-DNOLIBC_R’ オプションを与えなければなり ません。

スレッド化されたプロセスを簡単にリンクするために、gcc に FreeBSD 固有のオ プションが追加されています。 gcc -pthread はスレッド化されたプロセスに libc に代って libc_r をリンクします。

関連項目

pthread_create(3), pthread_detach(3), pthread_equal(3), pthread_exit(3), pthread_join(3), pthread_once(3), pthread_self(3), pthread_mutex_destroy(3), pthread_mutex_init(3), pthread_mutex_lock(3), pthread_mutex_trylock(3), pthread_mutex_unlock(3), pthread_cond_broadcast(3), pthread_cond_destroy(3), pthread_cond_init(3), pthread_cond_signal(3), pthread_cond_timedwait(3), pthread_cond_wait(3), pthread_rwlock_destroy(3), pthread_rwlock_init(3), pthread_rwlock_rdlock(3), pthread_rwlock_unlock(3), pthread_rwlock_wrlock(3), pthread_rwlockattr_destroy(3), pthread_rwlockattr_getpshared(3), pthread_rwlockattr_init(3), pthread_rwlockattr_setpshared(3), pthread_key_delete(3), pthread_getspecific(3), pthread_setspecific(3), pthread_cleanup_pop(3), pthread_cleanup_push(3)

規格

pthread_ 接頭語が付き、 _np 接尾語または pthread_rwlock 接頭語が付いてい ない libc_r の関数は、 ISO/IEC 9945-1:1996 (‘‘POSIX.1’’) に適合していま す。

pthread_ 接頭語および _np 接尾語が付いた libc_r の関数は、POSIX スレッド への非ポータブル拡張です。

pthread_rwlock 接頭語が付いた libc_r の関数は、 Version 2 of the Single UNIX Specification (‘‘SUSv2’’) の The Open Group によって作成された拡張で す。

FreeBSD 10.0 September 10, 1998 FreeBSD 10.0

スポンサーリンク