0

そのため、私は新しい運用管理システムを検証しており、これらの OS の 1 つが選択リストを拡張可能な数のハンドヘルド デバイスに送信しています。これらはメッセージを使用して送信され、それらの選択リストには重複するジョブが含まれる場合があります。したがって、私の仮想世界では、シミュレートされた 2 人の人間が同じ仕事を選択しないようにする必要があります。誰かが仕事を選択すると、すべてのジョブ リストが更新され、選択されたジョブが他の人のハンドヘルドに表示されなくなります。 、しかし、私にとってメッセージはまだ処理中のキューにあるため、そのオプションを必ず破棄する必要があります。

基本的に、私はこの巨大なリストにミューテックスを持っており、より多くの「人」がそれをより速くヒットするほど、メッセージの処理が遅くなり、リアルタイムではなくなります。これは悪いことです。メッセージについていくことができないので、実際にシステムを検証します。(同じ島にいる 2 人の男性は、1 人が 1 つのオブジェクトを選択し、次の男性が 2 番目のアイテムを選択する必要があることを認識しますが、私が選択しようとしているすべてのジョブをチェックして、それが誰かによって要求されているかどうかを確認する必要があります他にすでに)

リストのローカライズされたビニングを検討しましたが、実際には、とにかくそれを壊す愚かなケースでは問題を解決しません。同じ行で作業している人がたくさんいます。確かに、実生活では同じ解決策を実行する必要があるため、これはおそらく実在の人々にとっても混乱を招くでしょうが、この問題に対する現在受け入れられている「最良の」解決策は何かに興味があります.

PS - 私はすでにこれを c++ で実装していますが、実際のテストではこの質問に答える必要がないほど高速です。

前もって感謝します!

4

1 に答える 1

0

「(1 つの) ミューテックスを持つ巨大なリスト」の設計に問題があります。リストのサイズやアクセス レートが無制限の場合、同期された方法でリスト全体を提供することはできません。基本的な数学はあなたに不利に働きます。だから私がすることは、各ジョブのミューテックスフラグです。誰かの画面にジョブが表示されるのを防ぐことはできませんが、適切な「もう利用できません」というエラーが表示され、更新されたリストが表示されることは保証できます。非常に人気のあるギグの席を予約したいと思ったことがあるなら、解決策を目にしたことがあるかもしれません。

于 2013-01-28T12:11:18.927 に答える