EN JA
PTHREAD(3)
PTHREAD(3) FreeBSD Library Functions Manual PTHREAD(3)

名称

pthreadPOSIX スレッド関数

ライブラリ

POSIX Threads Library (libpthread, -lpthread)

書式

#include < pthread.h>

解説

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

POSIX スレッド機能群は、次のグループのこのセクションで要約されます:

  • スレッドルーチン
  • 属性オブジェクトルーチン
  • ミューテックス (mutex) ルーチン
  • 条件変数ルーチン
  • 読み込み/書き込みロックルーチン
  • スレッドごとのコンテキストルーチン
  • クリーンアップルーチン

スレッドルーチン

int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
実行の新しいスレッドを作成する。
int pthread_cancel( pthread_t thread)
スレッドの実行を取り消す。
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_kill( pthread_t thread, int sig)
指定されたスレッドにシグナルを配信する。
int pthread_once( pthread_once_t *once_control, void (*init_routine)(void))
初期設定ルーチンを一度呼び出す。
pthread_t pthread_self( void)
呼び出しているスレッドのスレッド ID を返す。
int pthread_setcancelstate( int state, int *oldstate)
現在のスレッドの取り消し可能な状態を設定する。
int pthread_setcanceltype( int type, int *oldtype)
現在のスレッドの取り消し可能なタイプを設定する。
void pthread_testcancel( void)
呼び出しているスレッドの取り消しポイントを作成する。
void pthread_yield( void)
スケジューラは、現在のスレッドの代わりに別のスレッドを実行することを可能にする。

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

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)
スレッド属性オブジェクトからコンテンション (contention) スコープ属性を取得する。
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)
スレッド属性オブジェクトのコンテンション (contention) スコープ属性を設定する。
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)
ミューテックス属性オブジェクトを破壊する。
int pthread_mutexattr_getprioceiling( pthread_mutexattr_t *attr, int *ceiling)
ミューテックス属性オブジェクトの優先順位上限 (ceiling) 属性を取得する。
int pthread_mutexattr_getprotocol( pthread_mutexattr_t *attr, int *protocol)
ミューテックス属性オブジェクトのプロトコル属性を取得する。
int pthread_mutexattr_gettype( pthread_mutexattr_t *attr, int *type)
指定されたミューテックス属性オブジェクトのミューテックスタイプ属性を取得する。
int pthread_mutexattr_init( pthread_mutexattr_t *attr)
デフォルト値でミューテックス属性オブジェクトを初期化する。
int pthread_mutexattr_setprioceiling( pthread_mutexattr_t *attr, int ceiling)
ミューテックス属性オブジェクトの優先順位上限 (ceiling) 属性を設定する。
int pthread_mutexattr_setprotocol( pthread_mutexattr_t *attr, int protocol)
ミューテックス属性オブジェクトのプロトコル属性を設定する。
int pthread_mutexattr_settype( pthread_mutexattr_t *attr, int type)
ミューテックスが作成されるとき、使用されるミューテックスタイプ属性を設定する。
int pthread_mutex_destroy( pthread_mutex_t *mutex)
ミューテックスを破壊する。
int pthread_mutex_init( pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
指定された属性でミューテックスを初期化する。
int pthread_mutex_lock( pthread_mutex_t *mutex)
ミューテックスをロックし、それが利用可能になるまでブロックする。
int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime);
ミューテックスをロックして、それが利用可能になるか、またはタイムアウトになるまでブロックする。
int pthread_mutex_trylock( pthread_mutex_t *mutex)
ミューテックスのロックを試みますが、ミューテックスが現在のスレッドを含む別のスレッドによってロックされているなら、ブロックしません。
int pthread_mutex_unlock( pthread_mutex_t *mutex)
ミューテックスのロックを解除する。

条件変数ルーチン

int pthread_condattr_destroy( pthread_condattr_t *attr)
条件変数属性オブジェクトを破壊する。
int pthread_condattr_init( 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);
条件のために指定された時間までウェート (待つ) し、指定されたミューテックスをロックする。
int pthread_cond_wait( pthread_cond_t *, pthread_mutex_t *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)
指定されたキーのためのスレッド特有の値を設定する。

クリーンアップルーチン

int pthread_atfork( void (*prepare)(void), void (*parent)(void), void (*child)(void));
fork ハンドラを登録する。
void pthread_cleanup_pop( int execute)
呼び出しているスレッドの取り消しクリーンアップスタックの先頭のルーチンを削除し、状況に応じてそれを呼び出します。
void pthread_cleanup_push( void (*routine)(void *), void *routine_arg)
呼び出しているスレッドの取り消しスタックに指定された取り消しクリーンアップハンドラをプッシュする。

実装に関する注

現在の FreeBSD POSIX スレッドの実装は、 1:1 Threading Library (libthr, -lthr) ライブラリに組み込まれています。それは、 Standard C Library (libc, -lc) 関数とスレッド関数のスレッドセーフなバージョンを含んでいます。スレッド化されたアプリケーションは、これらのライブラリとリンクされます。

規格

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

pthread_ 接頭辞と _np 接尾辞が付いた関数は、POSIX スレッドの移植性がない拡張です。

pthread_rwlock 接頭辞が付いた関数は、 Version 2 of the Single UNIX Specification (“SUSv2”) の一環として The Open Group によって作成された拡張です。

January 8, 2010 FreeBSD