【へいこうしょり】

並行処理 とは?

💡 同時にいくつものことをこなす「マルチタスク」
📌 このページのポイント
並行処理(Concurrency) シングルスレッド (順次実行) タスクA タスクB タスクC 時間 マルチスレッド (並行実行) タスクA T1 タスクB T2 タスクC T3 時間 並行のメリット 複数タスクを同時に 処理できるため 処理時間が短縮! 合計時間:長い 合計時間:短い スレッドが増えると同時に処理できるタスクも増える 用途例:Webサーバーの同時リクエスト処理・動画エンコード・データ分析
シングルスレッドとマルチスレッドの処理時間の違い
ひよこ ひよこ

並行処理って並列処理と何が違うの?

ペンギン先生 ペンギン先生

似てるけど微妙に違うんだ。並列(Parallel)は「CPUのコアが複数あって本当に同時に動く」こと。並行(Concurrent)は「1つのCPUでも交互に切り替えて同時に進んでいるように見せる」ことだよ。

ひよこ ひよこ

交互に切り替えるなら同時じゃないんじゃないの?

ペンギン先生 ペンギン先生

切り替えがすごく速いから、人間には「同時に動いてる」に見えるんだ。キッチンで料理しながら洗い物もこなすシェフみたいな感じかな。実際は一つずつやってるけど素早く切り替えてるんだよ。

ひよこ ひよこ

なんで並行処理が必要なの?

ペンギン先生 ペンギン先生

Webサーバーを例にすると、1000人が同時にアクセスしてきたとき、1人ずつ順番に対応してたら999人が待ちぼうけになるよね。並行処理があるから同時に多くのリクエストを捌けるんだよ。

ひよこ ひよこ

じゃあなるべく並行処理にすればいいじゃない?

ペンギン先生 ペンギン先生

ここが初心者から中級者になる壁で、並行処理を使うと「同じデータに複数の処理が同時に触れる」問題が起きやすいんだ。デッドロック競合状態って呼ばれるバグで、再現しにくくて調査が大変なんだよ。並行処理の設計は慎重さが必要なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
並行処理って出てきたら「複数の処理を同時に進める仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Concurrency」 = 並行・同時発生
💬 「並列(Parallel)」と混同されやすいが、厳密には違う概念。ConcurrencyはGo言語の設計思想に深く組み込まれている
← 用語集にもどる