問題タブ [mutual-exclusion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
27986 参照

synchronization - TestAndSet() 命令を使用した相互排除

Silberschatz、Galvin、および Gagne による書籍「Operating System Principles」には、同期に関する章の TestAndSet() 命令に関する次の定義が含まれています。

上記の命令を使用した相互排除の実装も、次のように提供されます。

では、 targetを TRUEに設定する条件がない場合、相互排除はどのように達成されるのでしょうか。

次の状況を考えてみましょう。プロセス P0 が共有変数ロックを TRUE に設定し、そのクリティカル セクションに入ります。別のプロセス P1 が上記の while ループで TestAndSet() を呼び出し、無条件にロックを FALSE に設定しながら TRUE を返します (P0 がロックを持っているため)。while ループで 2 回目に TestAndSet() が呼び出されると、FALSE が返され、P0 がクリティカル セクションにあるにもかかわらず、P1 がクリティカル セクションに入ります。次に、相互排除に違反します。

私はいくつかの検索を行い、TestAndSet() の次の代替定義を含む (ノースカロライナ州立大学 CS 部門の) Mithun Acharya と Robert Funderlic による論文に出くわしました。

これは私にとってより理にかなっています。比較のためにそれを含めました。また、この論文には参考文献の 1 つとして Silberschatz の本がリストされているためです。

教科書で見つけた定義 (最初に提供したもの) を使用して相互排除を達成する方法がわかりません。誰か助けてもらえますか?

0 投票する
11 に答える
48005 参照

c - 私のスピンロックの実装は正しく最適ですか?

非常に小さなクリティカル セクションを保護するためにスピン ロックを使用しています。競合が発生することはめったにないため、スピン ロックは通常のミューテックスよりも適切です。

私の現在のコードは次のとおりで、x86 と GCC を想定しています。

だから私は疑問に思っています:

  • このコードは正しいですか? 相互排除を正しく保証していますか?
  • すべての x86 オペレーティング システムで動作しますか?
  • x86_64 でも動作しますか? すべてのオペレーティング システムで?
  • 最適ですか?
    • コンペア アンド スワップを使用したスピン ロックの実装を見たことがありますが、どちらが優れているかはわかりません。
    • GCC アトミック組み込みドキュメント ( http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html ) によると、 __sync_lock_release. 私はメモリ バリアの専門家ではないので、 の代わりにこれを使用してもよいかどうかわかりません__sync_synchronize
    • 競合がない場合に最適化しています。

私は競合についてはまったく気にしません。数日に 1 回、スピン ロックをロックしようとしているスレッドが他に 1 つまたは 2 つある可能性があります。

0 投票する
2 に答える
2049 参照

attributes - UML で相互に排他的な属性をモデル化する方法は?

UML で分析モデルを作成していますが、クラス図でいくつかの属性に対する制約を表現しようとすると、少し行き詰まります。次のクラスで:

リストされている属性はすべてブール型で、最後の 2 つのisBazisQuuxは相互に排他的です。それをどのように示しますか?その場しのぎのメモは使いたくありません。

UMLの制約について私が見つけることができるものはすべて、それらを属性ではなく関連に適用しているようです。属性を関連付けられたクラスに分割することもできますが、それらは単純なブール型であるため、次のようなものはやり過ぎのように思えます。

UMLで相互に排他的な属性をモデル化する「正しい」方法は何ですか?

0 投票する
2 に答える
85 参照

php - 別のテーブルの CSV リストに基づく結果のみに制限する SELECT

したがって、1 つのテーブルに CSV のリストがあります。(EG: 1,3,19) ID がそれらのいずれかに一致する他のテーブルからすべてのユーザー名を検索したい。

私は次のようなことができるはずだと感じています:

しかし、私はそれを機能させることができません。私は何を間違っていますか?

0 投票する
6 に答える
1719 参照

php - PHP の C# lock ステートメントに相当するものは何ですか?

同時実行性とデータの整合性を確保するために、特定のオブジェクトの相互排他ロックをどのように取得しますか? データベースまたはファイル内でロックを使用する必要がありますか、または PHP はこのようなものをサポートしていますか?

0 投票する
6 に答える
3850 参照

c# - C#: アプリケーションの 2 つのインスタンスが同時に同じことを行うのを防ぐ方法は?

アプリケーション内に 2 つのスレッドがあり、特定のコードを同時に実行したくない場合は、次のようにコードの周りにロックを設定できます。

しかし、別々のプロセスで同じことを行うにはどうすればよいでしょうか? これが「グローバルミューテックス」を使用するものだと思ったのでMutex、さまざまな方法でクラスを試しましたが、次の要件を満たしていないようです。

  • あなたが唯一のインスタンスである場合は、先に進んでコードを実行してください。
  • 2 番目のインスタンスの場合は、最初のインスタンスが完了するまで待ってから、コードを実行します。
  • 例外をスローしないでください。

私が遭遇した問題:

  • Mutex節でオブジェクトをインスタンス化するだけでusing(){...}は何も起こらないようです。2 つのインスタンスは引き続き正常に同時に実行されます
  • Mutex を呼び出す.WaitOne()と、最初のインスタンスが実行され、2 番目のインスタンスが待機しますが、2 番目のインスタンスは、最初の呼び出しがスコープ.ReleaseMutex()を離れた後でも無期限に待機します。using(){}
  • .WaitOne()最初のプロセスが終了したときに例外をスローします ( System.Threading.AbandonedMutexException)。

これを解決するにはどうすればよいですか?特にWindows固有のように見えるため、関与しないソリューションはMutex大歓迎です。Mutex

0 投票する
2 に答える
317 参照

web-services - Web ページへの多重アクセスを防ぐには?

コンテンツを 1 回だけ提供したい Web サービスがあるとします。それが提供された後、その URL への他のアクセスはエラー メッセージを生成するはずです。

どうすればこのようなことをすることができますか?2 つのクライアントがまったく同じ瞬間に URL にアクセスするとどうなりますか?

0 投票する
5 に答える
29485 参照

php - PHP 相互排除 (ミューテックス)

PHP でのロックに関するテキストを読んでください。
それらはすべて、主にhttp://php.net/manual/en/function.flock.phpに向けられています。

このページでは、ハードディスク上のファイルを開く方法について説明します!!

本当にそうですか?つまり、これはロックを非常に高価にします-つまり、ロックするたびにハードディスクにアクセスする必要があります )=

嬉しいニュースでもう私を慰めることができますか?

編集:

私がここで得たいくつかの返信のために、私はこれを尋ねたいと思います;
私のスクリプトは 1 つのスレッドだけで実行されますか、それとも複数のスレッドで実行されますか? それが1つの場合、明らかにミューテックスは必要ないからです。簡潔な答えはありますか?

私は正確に何をしようとしていますか

ircmaxell からの質問。
これは話です:

私は 2 つの ftp サーバーを持っています。オンライン ユーザーの数を自分の Web サイトに表示できるようにしたいと考えています。
したがって、これらの ftp サーバーは統計情報を特定の PHP スクリプト ページに「POST」すると考えました。このページの URL を「http://mydomain.com/update.php」とします。

Web サイトのメイン ページ (" http://mydomain.com/index.php ") で、累積統計 (オンライン ユーザー) を表示します。

それでおしまい。

私の問題は、ある ftp サーバーが自分の統計を更新している間に別の ftp サーバーが更新した場合、情報が混ざり合うかどうかわからないことです。
マルチスレッドのときのように。2 つのスレッドが同時にいくつかの「int」変数を増やします。それらの間で同期しない限り、期待どおりには起こりません。
それで、私は問題がありますか?そうですね?

考えられる解決策

一日中一生懸命考えていると、ここにアイデアがあります。あなたの意見を聞かせてください。
前述のように、これらの ftp サーバーは 60 秒ごとに統計を投稿します。
このファイル「stats.php」を持つことを考えています。
これは、ftp サーバーがアクセスする更新スクリプト (「update.php」) と、訪問者がオンラインのユーザー数を確認できる「index.php」ページに含まれます。
これで、ftp サーバーが更新されると、「update.php」のスクリプトが「stats.php」を新しい累積統計で変更します。
最初に「stats.php」に含まれる統計を読み取り、蓄積し、そのファイルを書き換えます。

私が間違っていなければ、PHP はファイル ("stats.php") が変更されたことを検出し、新しいファイルをロードします。正しい?

0 投票する
3 に答える
2087 参照

regex - 相互に排他的な正規表現

正規表現のリストがある場合、2 つの正規表現が同じ文字列に一致しないことを簡単に判断する方法はありますか?

つまり、リストは、すべての文字列について、リスト内の最大 1 つの項目が文字列全体と一致する場合にのみ有効です。

これを決定的に証明するのは非常に難しい (おそらく不可能でしょうか?) ようですが、このテーマに関する研究は見当たらないようです。

私が尋ねる理由は、正規表現を受け入れるトークナイザーに取り組んでおり、一度に 1 つのトークンのみが入力の先頭に一致するようにしたいからです。

0 投票する
2 に答える
765 参照

ms-access - 2つの相互に排他的なリスト(2つのリストボックス)間のMS-Accessジャンクションテーブルの挿入/削除

このような設計で、ジャンクションテーブルにレコードを追加したり、レコードを削除したりする機能を作成したいと思います。

ケースは、従業員を編集し、彼らが受けることができる試験を選択するときからです。左側のリストボックスには、(とにかく)資格のない試験があり、右側のリストボックスには資格のある試験があります。

テーブルは次のようなものです。

EmpID常にExamID認識されますが、左側のリストボックスから選択されます。右側のリストボックスのレコードを削除するには、おそらくEmpIDとの両方が必要です。ExamID

それぞれのボックスに入れたら、すぐに削除/挿入する必要はありません(フォームが閉じるまで待つことができます)。

Accessでこれを達成するための良い/標準的な方法はありますか?