|
■No91382 (バンク さん) に返信 > 何とか計算速度を落とさずに、 > マルチスレッド処理できる方法はないでしょうか?
順番保証するためには何らかの同期(ロック)が必要であり、ノーコストで Parallel 相当の動作は実現できないように思えます。
たとえば、3 つのスレッドに A,B,C にそれぞれ (1,4,7),(2,5,8),(3,6,9) と割り振ったとしても、A,B,C の順番に次に続くことが保証されていませんので、1,2,3,4,... といくこともあれば、1,3,2,5,... といったように進むこともあり得ます。 このため、順番を保証して実行するためには、ゼロにはできない同期コストがかかります。
ゆえに、ロックによるペナルティを受け入れてでも順番に実行するか、スピードを優先して順番通りでなくても構わないようにするかを選ぶ必要があるでしょう。
-----
ところで、なぜ順番に実行されないと困るのですか? 結果を画面に表示するときに並べ替えるなど、多くの場合、代替案があるように思うためです。
|