parallel と concurrent 、並列と並行の覚え方

縦軸が時間、横軸がタスクと覚える。

なにやら縦棒が多ければ、同時に実行する様を表している。

なにやら横棒が多ければ、タスク同士が通信しながら実行する様を表している。


行と列の覚え方のパクリです。


以下余談。

タイムシェアリング *1 のことを concurrent という人もいる *2 けれど、何人かの有識者に聞いてみたところ、「複数のタスクが協調して実行すること」という概念を指すというのが正しいようで、タイムシェアリングはその実装形態のひとつらしい。concurrent と parallel は独立した概念で、concurrent なものを parallel に実行するというのもあるらしい。
また、parallel は 1 つのタスクを分割して実行するニュアンス、concurrent は複数のタスクが協調して実行するニュアンス、もあるらしい。
ほとんど伝聞なので、間違ってたら教えてください。

*1:ひとつの CPU で複数のタスクをコンテキストスイッチしながら、仮想的に同時に実行するようなやつ。

*2:ぼくも前はそうだと思ってた。