POSIXスレッド
POSIXスレッドの最新ニュースをまとめて検索!
POSIXスレッド は、スレッドのPOSIX標準である。スレッド生成やスレッド操作の API を定義している。
POSIXスレッド標準を実装したライブラリは Pthreads と呼ばれることが多い。Pthreads は主にUnix系POSIXシステム(Linux や Solaris)で使われているが、Microsoft Windows 用実装も存在する。例えば、pthreads-w32 は Pthreads の API のサブセットをサポートしている[1]。
目次 |
[編集] 内容
Pthreads はC言語のデータ型、関数、定数を定義している。その実装は pthread.h というヘッダファイルとスレッドライブラリにある。
データ型:
- pthread_t: スレッドへのハンドル
- pthread_attr_t: スレッド属性
スレッド操作関数(引数は省略):
- pthread_create(): スレッド生成
- pthread_exit(): 現在のスレッドを終了
- pthread_cancel(): 指定したスレッドの実行をキャンセル
- pthread_join(): 現在のスレッドを他のスレッドが終了するまでブロック
- pthread_attr_init(): スレッド属性を初期化
- pthread_attr_setdetachstate(): datachstate属性(スレッドがjoinできるかどうか)をセット
- pthread_attr_getdetachstate(): detachstate属性をゲット
- pthread_attr_destroy(): スレッド属性の破棄
- pthread_kill(): スレッドへのシグナル送信
- pthread_mutex_init(): mutexロックの初期化
- pthread_mutex_destroy(): mutexロックの破棄
- pthread_mutex_lock(): mutexロックの獲得(ブロックあり)
- pthread_mutex_trylock(): mutexロックの獲得(ブロックしない)
- pthread_mutex_unlock(): mutexロックの解放
- pthread_cond_init(): 条件変数の初期化
- pthread_cond_destroy(): 条件変数の破棄
- pthread_cond_signal(): 条件変数のシグナル
- pthread_cond_wait(): 条件変数で待つ
- pthread_key_create(): スレッドローカルデータと関連付けるキーを生成
- pthread_setspecific(): キーとスレッドローカルデータの関連付け
- pthread_getspecific(): キーを指定してスレッドローカルデータを検索
- pthread_key_delete(): キーの破棄
ユーティリティ関数:
- pthread_equal(): 2つのスレッドIDが等しいかどうかを調べる
- pthread_detach(): スレッドにリソースを解放させる
- pthread_self(): 自身のスレッドIDを得る
[編集] 例
C言語で Pthreads を使ったコード例を示す。
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <pthread.h> static void wait(void) { time_t start_time = time(NULL); while (time(NULL) == start_time) { /* 最大1秒間CPUスライスを消費するだけで、何もしない */ } } static void *thread_func(void *vptr_args) { int i; for (i = 0; i < 20; i++) { fputs(" b\n", stderr); wait(); } return NULL; } int main(void) { int i; pthread_t thread; if (pthread_create(&thread, NULL, thread_func, NULL) != 0) { return EXIT_FAILURE; } for (i = 0; i < 20; i++) { fputs("a\n", stdout); wait(); } if (pthread_join(thread, NULL) != 0) { return EXIT_FAILURE; } return EXIT_SUCCESS; }
このプログラムは、'b' を表示する新たなスレッドを生成し、同時にメインスレッドは 'a' を表示する。出力は、2つのスレッドが並行動作することで 'a' と 'b' が入り混じったものになる。
[編集] 関連項目
- Native POSIX Thread Library (NPTL)
[編集] 参考文献
- David R. Butenhof: Programming with POSIX Threads, Addison-Wesley, ISBN 0-201-63392-2
- Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farell: Pthreads Programming, O'Reilly & Associates, ISBN 1-56592-115-1
- Charles J. Northrup: Programming with UNIX Threads, John Wiley & Sons, ISBN 0-471-13751-0
- Kay A. Robbins and Steven Robbins, UNIX Systems Programming, Prentice-Hall, ISBN 0-13-042411-0
[編集] 脚注
[編集] 外部リンク
- Pthreads Tutorial
- C/C++ Tutorial: using Pthreads
- "POSIX threads explained" by Daniel Robbins (Gentoo Linux founder)
- インタビュー "Ten Questions with David Butenhof about Parallel Programming and POSIX Threads" by Michael Suess
- Open Source POSIX Threads for Win32
- The Open Group Base Specifications Issue 6, IEEE Std 1003.1
- GNU Portable threads
- Pthreads Presentation at 2007 OSCON (O'Reilly Open Source Convention) by Adrien Lamothe. Pthreads と最近の動向について
|
||||||||||||||||||||||||||||||||
フリー百科事典『ウィキペディア(Wikipedia)』 Text is available under GNU Free Documentation License.
最終更新 2009年9月16日 (水) 17:45 (日時は個人設定で未設定ならばUTC)。
【POSIXスレッド】変更履歴

