問題タブ [manualresetevent]

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 に答える
289 参照

.net - .NET でスレッドを中止すると、このコードが破損する可能性がありますか?

ちょっとした紹介:

複雑なマルチスレッド アプリケーション (エンタープライズ サービス バス ESB) では、Thread.Abort を使用する必要があります。この ESB は、ハードウェア セキュリティ モジュールと通信するユーザー作成モジュールを受け入れるためです。したがって、このモジュールがデッドロックしたり、ハードウェアが応答しなくなったりした場合は、このモジュールをアンロードするだけで済み、残りのサーバー アプリケーションは実行し続ける必要があります。

そのため、ユーザー セクションでのみコードを中止できることを保証する中止同期メカニズムがあり、このセクションは AbortAble としてマークする必要があります。これが発生した場合 (中止)、次のコードで ThreadAbortException がスローされる可能性があります。

たとえば、モジュールは AbortSection にあり (同様のメソッド StartAbortSection を呼び出すことによって入力されます)、ServerAplication はユーザー モジュールを中止することを決定しますが、この決定の後、実際の Thread.Abort の前に、モジュールはこのメソッドを呼び出すことによって NonAbortableSection に入りますが、実際にはそのロック オブジェクトでロックが取得されます。 .

したがって、ロックは中止が実行されるまでブロックされますが、このコードでこのブロックに到達する前に中止を実行することもできます。しかし、このメソッドを持つオブジェクトは不可欠であり、このコードの断片がいつでも中止しても安全であることを確認する必要があります (破損しない - たとえば、辞書から読み取るときに何が起こるかわかりません..)。

したがって、threadIdMap は Dictionary(int,ManualResetEvent) であり、ロック オブジェクトは ManualResetEvent のインスタンスであることに言及する必要があります。

私の質問を理解していただければ幸いです。大きくてすみません。

0 投票する
4 に答える
6215 参照

c# - C#でのManual/AutoResetEventの軽量な代替手段

私は、C#/。NETでManualResetEventクラスとAutoResetEventクラスを使用する代わりの軽量な方法を作成しました。この背後にある理由は、カーネルロックオブジェクトを使用することの重みなしに、イベントのような機能を持つことでした。

コードはテストと本番の両方でうまく機能しているように見えますが、すべての可能性に対してこの種のことを正しく行うことは骨の折れる作業である可能性があり、これについてStackOverflowの群衆から建設的なコメントや批判を謙虚に要求します。うまくいけば(レビュー後)これは他の人に役立つでしょう。

使用法は、Set()に使用されるNotify()を使用したManual/AutoResetEventクラスと同様である必要があります。

ここに行きます:

0 投票する
0 に答える
1271 参照

c# - System.Threading.Timer の Dispose メソッドが ManualResetEventSlim で機能しない?

Windows サービスをシミュレートするサンプル コンソール アプリの次のコードがあります。

ManualResetEventSlim を使用すると、WaitHandle を受け入れる Dispose オーバーロードがハンドルを通知しないことに驚きました。代わりに ManualResetEvent を使用するようにコードを変更すると、実際にハンドルが通知されます。

何を与える!

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

c# - ManualResetEventスリムとロック

取得にかなりの時間がかかるデータがあります。新しいデータをフェッチする必要があるかどうか、または現在の「キャッシュ」を使用できるかどうかを判断するには、さまざまな方法があります。theResult 誰かがそのデータを要求したときに、ブロッキングと非ブロッキングの両方のリターンを実行できるようにしたいと考えています。

それを行う最善の方法がわからないので、ManualResetEventSlim とロックを使用して何かを検討していました。

ノンブロッキング:

ブロッキング:

しかし、それがそのようなことをする方法であるとは確信していません。たとえば、_resetEvent.Wait()内側のlock(...){}?

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

.net - manualResetEventをロックするときのデッドロック

manualResetEventのインスタンスをロックするときに発生するデッドロックが発生します。どうやって解決したらいいのかわからない。助けていただければ幸いです。

異なるスレッドによって実行されるクラスに2つのメソッドがあります。

最初のスレッドはロックを取得し、_event.WaitOne();でブロックされます。

ソコンドスレッドは行_event.Reset();を実行しました。また、lock(_event)を実行しようとするとブロックされます。

WaitOneでスレッド1がブロックされたら、ロックを解除する必要があると思いました。私は間違っていると思います。どうすれば修正できるのかわかりません。ところで-ロックブロックのコードは両方のスレッドで同期する必要があるため、ロックを追加しました。

長い投稿をありがとうございました。

0 投票する
4 に答える
2290 参照

c# - ManualResetEvent をロック オブジェクトとして使用する必要がありますか?

以下のメソッドは、最初の呼び出しでは true を返し、それ以外の呼び出しでは false を返す必要があります。

問題はありますか?ロックにリセットイベントを使用しても安全ですか?


編集:あなたの発言を確認した後、いくつかの変更を加えました。ManualResetEvent以前のデザイン案で行き詰まりました。私は実際にはそれをまったく必要としません。

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

iphone - 特定のイベントでアプリケーションをリセットする

私は iPhone アプリを書いています。たとえば、ユーザーがゲームに勝ったなどの特定のイベントが発生した場合、アプリケーションを起動直後に初期状態にリセットしたいと考えています。たとえば、viewDidLoad() を再度実行するなどです。Xcode と Objective C でこれを行う簡単な方法はありますか? ありがとうございました。

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

windows-phone-7 - 応答を待って操作を行うにはどうすればよいですか?

新しい問題が 1 つあります。応答でいくつかの操作を実行したいのですが、まだ到着していないため、NullReferenceException が発生します... これが私のコードです。

しかし、ManualResetEvent クラスを使用すると、if(dataReady.WaitOne()) 行が原因でアプリがハングします。以下は、ManualResetEvent クラスを含む完全なコードです。

それで、私の質問があります:どうすれば応答を待って操作を行うことができますか? (Application.DoEventメソッドを使おうとしましたが、WP7には存在しません...)

0 投票する
0 に答える
124 参照

c# - IPy ScriptEmbeddedまたは「スタンドアロン」を実行する場合の違いは?

他の投稿ですでに書いているように、私は現在、IronPython用のIDE/デバッガーを書いています。

しかし今、私は別の問題に遭遇しました。

IronPythonスクリプトから呼び出すC#で記述されたライブラリがあります。

「ipy.exemyScript.py」を介してコンソールでスクリプトを実行すると、完全に機能します。しかし、次のように実行すると、C#ライブラリのスレッドに問題が発生します。

少なくとも、スレッドの問題だと思います。スレッド内の別のハードウェアからの応答を待っているのに対し、別のスレッドはタイムアウトのあるManualResetEventによってブロックされているからです。ただし、埋め込みモードでスクリプトを実行すると、イベントを設定する代わりに、タイムアウトメソッドが呼び出されます。

誰かがこれが何から来るのか考えていますか?

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

c# - BeginGetResponse コールバックが呼び出されないのはなぜですか?

これが私のコードです:

アプリケーションをデバッグすると、CreateRequest に入り、RequestCallback に入りますが、停止して ResponseCallback に入ることはありません。私が間違ったとき、なぜそれが ResponseCallback に入らないのですか?