2

並列プログラムをプログラミングしているときに、2 つの値の一意のグループを使用して何かを作成するという問題に遭遇することがよくあります。言い換えれば、これは握手問題であり、各人が他の人と握手をしなければなりません。握手後は、参加者全員で夕食会。

これを行う方法を知っている2つのアプローチがあります。

  1. すべての男性に番号を付け、それを各男性に平行にして、番号が小さい男性と握手します。最後の番号の男性が全員に握手を求める前に、夕食は冷えます。

  2. 参加人数をお伝えし、その値をもとに条件を作っていきますので、ほぼ全員が揺れます。並行して同じ数の手。参加者は数学が苦手なので、夕食は寒くなります。(この場合、人々は別人のように振る舞うことができます)

男性を数字に交換したり、振って比較したり、乗算したりすることもできます。問題は、寒くなる前にその夕食を食べたいのですが、1つのスレッドを待ったり、多くの条件を作成したりすると、プロセスが遅くなることです.

これを行うための他のより効率的な方法はありますか?

4

1 に答える 1

0

「数学が苦手」でどれだけ制約を受けているかはわかりませんが、スポーツリーグのスケジュールを自動的に生成する方法をご覧になるとよいでしょう。 http://en.wikipedia.org/wiki/を参照してくださいRound-robin_tournament .

同期プリミティブがどれほど効率的かどうかを判断するには、遅れているプロセスが追いつくのを待つのに費やされた時間と、同期自体に費やされた時間を別々に追跡する必要があります。遅れている人が追いつくのを待っている時間が実際に費やされている場合は、遅れている人をスピードアップする必要があります (たとえば、より均等に作業を分散させることによって)、または遅れている人を待つ必要を回避する必要があります。あまり役に立ちません。

于 2012-07-04T18:44:47.383 に答える