2011-02-24 12 views
5

私のプロジェクトにスレッドAとスレッドBという2つのスレッドがあります。Linuxのシグナルメカニズムと同等のC#とは何ですか?

スレッドBがビジー状態になっている間に、スレッドAからスレッドBに信号を送りたいと思います。直ちに対応するシグナルハンドラを実行します。 Linuxでは、シグナルでこれを行うのは簡単です。同じ効果を得るには、C#スレッドで何をすべきですか?

+0

何をしていてもスレッドBを中断しますか?または、スレッドBが定期的に信号を送信したかどうかを確認したいですか? –

+0

何をしていてもスレッドBを中断したい。さもなければ、すべてのwaithandleの施設は大丈夫でしょう。 – cooldfish

答えて

0

実行中のスレッドを任意に中断することはできません。ブロックしているスレッドのみです。

this explanationをご覧ください。

PulseWaitを参照してください。私は、彼らはあなたのニーズに正確に適合している適切かわからないけれども、あなたがに興味がある可能性があり何

3

私はLinuxでsignalについて知りませんが、ManualResetEventを使って別のスレッドに通知することができます。

0

は、Monitorクラスの2つの方法です。

0

.Netの世界ではWaitHandlesが使用されています。これは、スレッドがシグナルを送るまでブロックするメソッドを公開する抽象クラスであり、ブロッキングスレッドが "起きる"べきであることを通知するメソッドを公開します。

AutoResetEvent,ManualResetEvent,MutexおよびSemaphoreなど、いくつかの具体的な実装があります。

関連する問題