Windows/Linux システムプログラミングの入り口 スレッド
スレッドについて整理します
主な用途はプロセス内での平行処理です
具体的な例は
前回整理したメッセージング/シグナルの
受信待ちと平行で処理する際に使います
作り方は
【Windows】
・考え方
プロセスからスレッドを作成する
スレッドを終了する
スレッドの終了を待つ
・スレッドを作成する
平行処理したい関数を作る
グローバル変数とヒープ、環境変数はスレッド間で共有される
_beginthreadex(Win32API)を呼ぶ
平行処理したい関数ポインタを登録しスレッドを作成
・スレッドを終了する
パターン1:自然終了
平行処理側の処理が普通に終了
スレッド作成側は CloseHandle(Win32API)を呼び後始末する
グローバル変数に終了フラグを仕込んどくと
任意のタイミングで自然終了させられる
パターン2:強制終了
あまり使わない
スレッド作成側が _endthreadex(Win32API)を呼び
平行処理を終了させる
スレッド作成側は CloseHandle(Win32API)を呼び後始末する
・スレッドの終了を待つ
スレッド作成側は、平行処理を待ちます
待たずに終了すると平行処理が途中で切れる
スレッド作成側は WaitForSingleObject(Win32API)を呼び
CloseHandle(Win32API)を呼び後始末する
スレッドの終了を待たない場合
あまり使わない
_beginthread(Win32API)で作成し
_endthread(Win32API)か自然終了させる
【Linux】
・考え方
プロセスからスレッドを作成する
スレッドを終了する
スレッドの終了を待つ
・スレッドを作成する
平行処理したい関数を作る
グローバル変数とヒープ、環境変数はスレッド間で共有される
pthread_create(システムコール)を呼ぶ
平行処理したい関数ポインタを登録しスレッドを作成
・スレッドを終了する
パターン1:自然終了
平行処理側の処理が普通に終了
グローバル変数に終了フラグを仕込んどくと
任意のタイミングで自然終了させらる
パターン2:強制終了
スレッド作成側が pthread_exit(システムコール)を呼び
平行処理を終了させる
・スレッドの終了を待つ
スレッド作成側は、平行処理を待ちます
待たずに終了すると平行処理が途中で切れる
スレッド作成側は pthread_join(システムコール)を呼ぶ
スレッドの終了を待たない場合
あまり使わない
スレッド作成後 pthread_detach(システムコール)を呼び
後始末しないことを通知する
大まかに入り口だけ書いてるので
詳細は書籍等で
過去の記事におすすめの本が紹介してあります
主な用途はプロセス内での平行処理です
具体的な例は
前回整理したメッセージング/シグナルの
受信待ちと平行で処理する際に使います
作り方は
【Windows】
・考え方
プロセスからスレッドを作成する
スレッドを終了する
スレッドの終了を待つ
・スレッドを作成する
平行処理したい関数を作る
グローバル変数とヒープ、環境変数はスレッド間で共有される
_beginthreadex(Win32API)を呼ぶ
平行処理したい関数ポインタを登録しスレッドを作成
・スレッドを終了する
パターン1:自然終了
平行処理側の処理が普通に終了
スレッド作成側は CloseHandle(Win32API)を呼び後始末する
グローバル変数に終了フラグを仕込んどくと
任意のタイミングで自然終了させられる
パターン2:強制終了
あまり使わない
スレッド作成側が _endthreadex(Win32API)を呼び
平行処理を終了させる
スレッド作成側は CloseHandle(Win32API)を呼び後始末する
・スレッドの終了を待つ
スレッド作成側は、平行処理を待ちます
待たずに終了すると平行処理が途中で切れる
スレッド作成側は WaitForSingleObject(Win32API)を呼び
CloseHandle(Win32API)を呼び後始末する
スレッドの終了を待たない場合
あまり使わない
_beginthread(Win32API)で作成し
_endthread(Win32API)か自然終了させる
【Linux】
・考え方
プロセスからスレッドを作成する
スレッドを終了する
スレッドの終了を待つ
・スレッドを作成する
平行処理したい関数を作る
グローバル変数とヒープ、環境変数はスレッド間で共有される
pthread_create(システムコール)を呼ぶ
平行処理したい関数ポインタを登録しスレッドを作成
・スレッドを終了する
パターン1:自然終了
平行処理側の処理が普通に終了
グローバル変数に終了フラグを仕込んどくと
任意のタイミングで自然終了させらる
パターン2:強制終了
スレッド作成側が pthread_exit(システムコール)を呼び
平行処理を終了させる
・スレッドの終了を待つ
スレッド作成側は、平行処理を待ちます
待たずに終了すると平行処理が途中で切れる
スレッド作成側は pthread_join(システムコール)を呼ぶ
スレッドの終了を待たない場合
あまり使わない
スレッド作成後 pthread_detach(システムコール)を呼び
後始末しないことを通知する
大まかに入り口だけ書いてるので
詳細は書籍等で
過去の記事におすすめの本が紹介してあります
この記事へのコメント