並行と並列周りの俯瞰
並行と並列周りの俯瞰
ついでにこの辺も整理したい
スレッド
プロセス
async, await
GPU
CPU
パタヘネ
並行プロセス
プロセス競合
複数のプロセスがリソースを取り合う状態
プロセス協調
複数のプロセスが一つの目的を達成する
プロセス干渉
他のプロセスの処理が別のプロセスの処理に影響を与えてバグが発生する状態
自分に割り当てられたメモリ領域に以外に書き込みを行う場合に発生する
並行処理の難しさ
競合状態
メモリアクセス同期
リソース枯渇
プロセスが仕事をするためのリソースを取得できない状態
書いて理解
関連ノート
機構
並行処理 処理を切り替える2通りの方法
マルチタスク
協調的マルチタスク
切りの良いところで交代する
プリエンプティブマルチタスク
一定時間で交代する
競合状態の3条件(競合状態が起きるためには以下の3つを全て満たす場合に起こる)
2つの処理が変数を共有している
対処法
少なくとも1つの処理がその変数を書き換える
対処法
書き換えない
一方の処理が一段落付く前にもう一方の処理が割り込む可能性がある
対処法
割り込まない
協調的なスレッド
ファイバー
割り込まれると困る処理に印をつける
ロック
ミューテックス
セマフォ