最終更新:2025-03-25 (火) 07:11:17 (26d)  

pthread
Top / pthread

POSIX仕様に基づく非同期処理の仕組み

POSIX.1-2004

Ubuntu/パッケージ

ヘッダファイル

pthread/関数

スレッド

pthread_create - 新しいスレッドを作成する

  • pthread_create(pthread_t? * thread, pthread_attr_t? * attr, void * (*start_routine)(void *), void * arg)
  • スレッドが正常に作成出来た時にthreadにスレッドIDが格納される

pthread_exit - 呼び出したスレッドを終了する

pthread_join - 指定されたスレッドが終了するのを待つ

pthread_detach - スレッドを切り離す

  • pthread_detach(pthread_t? thread)
  • threadが示すスレッドIDのスレッドが終了した時に、そのスレッドのメモリを回収してもよい事を宣言
  • いったんスレッドを detached 状態にすると、 そのスレッドを pthread_join で join したり、 もう一度 join 可能にしたりすることはできない。

pthread_cancel - スレッドにキャンセル要求を送る

pthread_equal - スレッド ID を比較する

pthread_self - カレントスレッドのIDを返す

pthread/排他処理

pthread/ミューテックス

pthread/条件変数

  • 特定の条件が満たされるのを待機し、シグナルで他スレッドに通知
  • pthread_cond_init
  • pthread_cond_signal?

pthread/RWロック?

  • 読み取り専用アクセスと書き込みアクセスを効率的に制御するためのロック
  • pthread_rwlock_init?
  • pthread_rwlock_rdlock?

pthread/バリア同期?

  • 複数のスレッドが特定のポイントに到達するまで待機し、一斉に進行する
  • pthread_barrier_init?
  • pthread_barrier_wait?

pthread/スピンロック?

  • 待機中にCPUを占有してロックの取得を試みる軽量なロック機構
  • pthread_spin_init?
  • pthread_spin_lock?

スレッドローカル変数

メモ

  • pthread_attr_init?

スレッドの終了条件

  • スレッドがpthread_exitを呼び出す
  • スレッドがstart_routine()から返る
  • スレッドがキャンセルされる (pthread_cancel)
  • プロセス内のいずれかのスレッドでexitが呼ばれるか、メインスレッドのmain内でreturnが実行される

pthreadリファレンス

関連

GNU Hurd

参考