問題タブ [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 投票する
1 に答える
587 参照

multithreading - セマフォなどで相互排除が保証されている場合、プログラムはデッドロックフリーですか?

相互排除とデッドロックをそれぞれ次のように定義します。相互排除条件は、各共有リソースが常に 1 つのプロセスに割り当てられているか、使用可能である場合に存在します。セット内の各プロセスが、セット内の別のプロセスのみが発生できるイベントを待機している場合、プロセスのセットはデッドロック状態になります。

たとえば、バイナリ セマフォが使用され、そのうちの 1 つだけが同時にクリティカル領域に入ることができるようにします。各プロセスはクリティカル領域に入る直前にダウンし、クリティカル領域から出た直後にアップするため、相互排除が保証されます。

デッドロックが発生するには 4 つの条件がすべて満たされている必要があることを理解しています。そのうちの 1 つは、相互排除条件です (2 つのプロセスがクリティカル セクション内に同時に存在することはできません)。

相互排除が保証されているので、この場合、プログラムはデッドロックフリーですか?

よろしく。

0 投票する
1 に答える
35 参照

concurrency - 相互排除問題における「スライス」の意味

次のステートメントで「スライス」とはどういう意味ですか。

作成者は、このプログラムではミューテックスが満たされていないことを示そうとしています。http://www.mcs.csueastbay.edu/~billard/os/mutex.txtからです

ありがとう。

0 投票する
1 に答える
106 参照

javascript - イベントベースのシステムで一意性を同時に処理する

私が現在取り組んでいるプロジェクトには、いわゆる課題があります。課題にはメンバー参加者がいます。メンバーとは、チャレンジにアクセスできるすべての人 (単一のユーザーまたはユーザーのグループの両方) であり、参加者はユーザーごとに参加に関する統計を追跡します。

チャレンジ参加者は、新しいチャレンジ メンバーが追加されるたびに再計算されます。これはイベントベースで発生するため、チャレンジ メンバーがcreatedイベントをトリガーし、チャレンジ参加者がリッスンします。

問題は、2 つのチャレンジ メンバーが同時に作成された場合に発生します。つまり、イベントも 2 回トリガーされ、コードの 2 つの実行が同時に実行されます。説明する:

前述のように、上記のコードが同時に実行されている場合、より具体的にはgetParticipants、最初の実行が欠落していた参加者エントリを作成する前に 2 番目の実行が到達した場合に問題が発生します。どちらの実行でも、一部の参加者が欠落していることを確認し、それらを作成します。これは、一部のユーザーのチャレンジ参加者のエントリが重複していることを意味します。

現在、この問題に対する私たちの解決策はchallenge_id, user_id、チャレンジ参加者に一意のインデックスを設定することです。ただし、制約に違反しているときにエラーを無視するのは少し汚いと感じます。また、すべてのエラーがコールバックに渡されるだけなので、他の SQL エラーをチェックするのが難しくなります。エラー文字列の内容をチェックして、それが適切なエラー (一意性違反) であるかどうかを確認する必要があります。好ましくないエラー (不適切な構文など) を処理する必要があります。

このコードは複数のサーバーで実行されるため、mutices を使用しても、コードが同時に実行されないという保証はありません。また、同じチャレンジで同時に実行されない限り、異なるチャレンジで同時に実行されてもかまいません。このタイプの同時マージを処理するための提案はありますか?

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

java - このアプリケーションで同期メソッドを使用して相互排除を実現する方法

ここでちょっとした問題に遭遇しました。Javaで並行プログラムを実行しています。問題: 4 人 (学生) がプリンターにアクセスして、5 つのドキュメントを印刷しようとしています。ただし、一度に印刷できるのは 1 つだけです (明らかなように) 5 つのドキュメント。終了すると、他のスレッドが完了したことを通知し、他のスレッドがリソースにアクセスします。メインクラス、学生クラス、モニター(レーザープリンター)、(ページ数、名前ユーザーIDなど)+プリンター用のいくつかのインターフェイスなどのドキュメントに関する情報を保持するドキュメントクラスがあります。スレッドを正常に実行できましたが、それらは同期されていません (相互排除)
問題は、相互排除を達成する方法です (一度に 1 人だけが自分のドキュメント数を印刷できるということです)
ご覧いただきありがとうございます。時間とヒント: )

メインクラス

学生クラス

モニタークラス

0 投票する
1 に答える
4041 参照

python - Python:argparseを使用してサブパーサーに相互に排他的なグループを作成するにはどうすればよいですか?

私は次のようなプログラムを書いています:

task1を実行するときに説明したように、--inまたは--out必須ですが、両方ではありません。この機能をプログラムに追加するにはどうすればよいですか?

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

c - 静的変数とスレッド (C)

C の関数内で静的変数を宣言するということは、この変数が関数呼び出し間でその状態を保持することを意味することを知っています。スレッドのコンテキストでは、これにより、変数が複数のスレッドにわたってその状態を保持するか、または各スレッド間で個別の状態を持つことになりますか?

これは、私が答えるのに苦労している過去の紙の試験問題です。

次の C 関数は、呼び出し元に一意の識別子 (UID) を割り当てるために使用することを目的としています。

get_uid() が複数のスレッドによって呼び出されている環境で、どのように正しく動作しないかを説明してください。特定のシナリオ例を使用して、そのような不適切な動作が発生する理由と方法を具体的に説明してください。

現時点では、各スレッドが変数に対して個別の状態を持っていると想定していますが、それが正しいかどうか、または答えが相互排除の欠如と関係があるかどうかはわかりません。その場合、この例でセマフォをどのように実装できますか?

0 投票する
1 に答える
1549 参照

multithreading - デッカーアルゴリズム

デッカーアルゴリズムがどのように見えるかは知っていますが、なぜそのようなものが機能しないのでしょうか?

私のソリューションの何が問題になっていますか?

0 投票する
1 に答える
164 参照

concurrency - 消費者生産者アルゴリズムのハイブリッド ソリューション

私は、生産者/消費者問題の次の解決策が機能しないことを示しようとしています.消費者がM1の先頭にある場合、有限時間内にアイテムをデキューできない場合があることを示しています.時間、および/またはプロデューサが L2 の先頭にあり、限られた時間内にアイテムをキューに入れることができない場合があります。私はそれを証明する例を見つけることができません。

このアルゴリズムでは、10 のプロデューサー、10 のコンシューマー、および 10 のバッファー サイズがあると想定しています。

プロデューサー

消費者