問題タブ [semaphore]
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.
.net - .Netのセマフォクラスについて
リソースをスレッドの数に割り当てる必要があったため、これらすべてを処理するためにセマフォを使用しました。その後、リソースのプロセス間ロックの場合にセマフォが使用されることに気付きました。私はグーグルでIn-ProcessSemaphoreの実装を見つけてそのクラスを使用しましたが、いくつかの奇妙なバグがあります。
今私の質問は、ドットネットセマフォクラスを使用する必要がありますか?とにかく、プロセス内セマフォを作成して、プロセス間(内部管理)のコストを削減できるのでしょうか。
javascript - javascript クリティカル セクションまたはセマフォの問題
上記のコードがあります。特定の時間間隔で更新を行うメインループがあります。問題は、変数 this.criticalSection で区切られた「クリティカル セクション」に入ることに気付きました。
firebug から、「in critical section」+ index および「out critical section」+index というメッセージを正しい順序で取得しますが、ajax リクエストはまだ処理中です。しかし、同じインデックスでリクエストを受け取りましたが、どこで問題を探すべきか本当にわかりません。
javascript にセマフォまたはクリティカル セクション用のビルトイン機能はありますか?
ipc - セマフォは IPC メカニズムですか?
セマフォは IPC メカニズムですか?
c - Solaris で実行されているこのコードのセマフォ func semctl() でのバス エラー
これは、セマフォとスレッドに対する私の最初の試みです。このコードは、例とネットで見つけた man ページから作成しました。このコードには 2 つの疑問があります。
semctl を試すたびに Bus エラーが発生するのはなぜですか (デバッグ行 3 が出力されないため、これが問題の原因であることはわかっています)。また、それを防ぐ方法を教えてください。
semctl() を削除したにもかかわらず、クリティカル セクションのロックを取得できないのはなぜですか?
次のコードを実行しようとしています。
注:提案後にコードに次を追加しました:
また、以下を追加しました。
semctl 行を次のように変更しました
すべての rc チェックを次のように行いました。
semctl() 行はまだ正常に実行されません。errno は次のように表示されます: Permission Denied
更新:次の変更を使用して、「アクセス許可が拒否されました」エラーを取り除くことができます。
さて、新しい問題は、コンソールに「abc」を出力できないことです。プログラムは単に "a" を出力してハングします。理由がわからない。
最終更新: ロック解除コードを台無しにしました: 1 の代わりに -1 を使用しました 新しいコードは次のとおりです:
皆さんの助けと忍耐に感謝します。
c# - セマフォを使用してキューを保護する際の問題
次のコードを使用して、リソースの使用を制限しています。
ときどき (正常に実行されてから 3 ~ 4 日後)、キューが空の例外が発生するか、返されたオブジェクトが null であることがわかります。
この Get メソッドに入るスレッドを 5 つだけに制限しているのでしょうか。
GetConnection が呼び出される場所では、ReleaseConnection も Final ブロック内で確実に呼び出されます。
各呼び出しで、私もログインしていません。キュー内のリソースの。キュー カウントが 5 を超えることはないようです。
私の質問は、lock/Monitor を使用して、キュー (リソース インスタンス) へのアクセスを同期する必要がありますか?
c - C で sem_open を複数回呼び出すにはどうすればよいですか?
C の Linux ベースのシステムでセマフォを動作させるのに多くの困難を経験しています。
私の申請プロセスは次のとおりです。
- 申し込み開始
- アプリケーションは子/親に分岐します
- 各プロセスは
sem_open
共通名を使用してセマフォを開きます。
フォークする前にセマフォを作成すると、正常に動作します。ただし、要件により、そうすることができません。2 回目の呼び出しを試みるとsem_open
、「許可が拒否されました」というエラーが表示されます (経由errno
)。
何らかの方法でこれを行うことは可能ですか? または、1 つのプロセスでセマフォを開き、共有メモリ メカニズムを使用して子プロセスと共有する方法はありますか?
java - Java スレッドの内部
私はかなり長い間Javaの内部を研究してきました。Java でスレッド化/ロックがどのように行われるかを学び、理解したいと思っています。
したがって、同期されたメソッドまたは同期されたブロックにアクセスするには、スレッドは最初にオブジェクトのロックを取得する必要があります。さて、ここに私がもう少し光が必要なものがあります。
では、スレッドがオブジェクトのロックを取得するたびに、内部でセマフォの値をインクリメントするのでしょうか? 答えが「はい」の場合は、このシナリオを見てみましょう。
したがって、スレッド 1 とスレッド 2 の 2 つのスレッドがあるとします。スレッド 1 が最初にmethod_1に入り、最初に xyz のロックを取得したと仮定します。そして、Thread2が method_2に入り、xyz のロックを取得しようとします。何が起こるか?(私に言わせれば、Thread2 は、オブジェクトのセマフォ値が 0 より大きいことが判明したため、ブロックされます)
私の推論が正しいかどうか教えてください。
concurrency - ロック、ミューテックス、セマフォの違いは何ですか?
並行プログラミングに関連するこれらの言葉を聞いたことがありますが、ロック、ミューテックス、セマフォの違いは何ですか?
c++ - C++ でミューテックスを介してセマフォを使用するのはどのような状況ですか?
マルチスレッドについて読んだリソース全体を通して、ミューテックスはセマフォと比較してより頻繁に使用され、議論されています。私の質問は、いつミューテックスでセマフォを使用するのですか? Boost スレッドにセマフォが表示されません。それは、セマフォが最近あまり使われなくなったということですか?
私が理解している限り、セマフォを使用すると、リソースを複数のスレッドで共有できます。これは、それらのスレッドがリソースの読み取りのみを行い、書き込みを行わない場合にのみ可能です。これは正しいです?
c++ - ReleaseSemaphoreはセマフォを解放しません
(要するに:main()のWaitForSingleObjectは以下のプログラムでハングします)。
スレッドをディスパッチし、スレッドが終了するのを待ってから再開するコードを書き込もうとしています。コストのかかる毎回スレッドを作成する代わりに、スレッドをスリープ状態にしました。メインスレッドは、CREATE_SUSPENDED状態でXスレッドを作成します。
同期は、MaximumCountとしてXを使用するセマフォを使用して行われます。セマフォのカウンタがゼロになり、スレッドがディスパッチされます。スレッドはいくつかのばかげたループを実行し、スリープ状態になる前にReleaseSemaphoreを呼び出します。次に、メインスレッドはWaitForSingleObjectをX回使用して、すべてのスレッドがジョブを終了し、スリープしていることを確認します。次に、ループしてすべてをやり直します。
時々、プログラムは終了しません。プログラムをくちばしにすると、WaitForSingleObjectがハングしていることがわかります。これは、スレッドのReleaseSemaphoreが機能しなかったことを意味します。何も印刷されていないので、おそらく何も問題はありませんでした。
たぶん、2つのスレッドがReleaseSemaphoreを同時に呼び出すべきではありませんが、それはセマフォの目的を無効にするでしょう...
私はそれを食べません...
スレッドを同期する他のソリューションはありがたいことに受け入れられています!