並列 vs 並行 for "concurrency"
smikitky opened this issue · comments
Soichiro Miki commented
以前 Twitter か何かで「concurrent modeは『並列モード』ではなく『並行モード』が正しい」みたいな指摘を見たことがあり、当時はあまり気に留めていなかったのですが、ふと違いがあるのか気になって調べてみたところ、どうも確かに「並行」の方が正しいのではという気がしてきました。
Wikipedia を見た限り、両者は学術的に違う概念であり、以下のように区別されると理解しました。
- 並列 = parallel = 複数のプロセッサで大きなタスクを分散処理して処理時間を短縮すること。みんなで手分けして作業すればつらい仕事も早く終わる、的なこと。
- 並行 = concurrent = (1コア内で)スレッドのスケジューリングや non-blocking IO、Promise.all 的なものを使い、応答性を改善すること(合計処理時間は減らなくてもよい)。1人しかいないけどひとまず同時に多数の仕事に着手してそれぞれ少しずつ作業を進めていれば文句が出ない、的なこと。
【小ネタ】並列処理とは何か?そして並列処理と並行処理の違いとは?
というわけで、React の concurrency は別に Web Worker を使った高速化みたいな話ではないので、「並行」の方が学術的に正しい気がしてきました。幾何学の「平行」が「parallel」なので混乱していました…。
次回ドキュメント刷新のあたりでこっそり「並行」に変えるのがいいのかなと思っているのですが、如何でしょうか。
Toru Kobayashi commented
👍 いいと思います!確かに React のやっていることを考えても並行ですね。(日本語での違いをあまり意識してませんでした...)
Toru Kobayashi commented
Soichiro Miki commented
はい、大丈夫です