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) 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) 属性オブジェクトルーチン |
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) 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_trylock(pthread_mutex_t
*mutex) int pthread_mutex_unlock(pthread_mutex_t
*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) 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) クリーンアップルーチン |
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_ 接頭語が付き、 _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 |