2011-02-24 4 views
5

내 프로젝트에 스레드 A와 스레드 B라는 두 개의 스레드가 있습니다.Linux의 신호 메커니즘과 동일한 C#은 무엇입니까?

스레드 B가 작업 중일 때 스레드 A에서 스레드 B로 신호를 보내려합니다. 스레드 B가 신호를받은 후 해당 신호 처리기를 즉시 실행합니다. 리눅스에서는 신호로 이것을하기가 쉽습니다. 동일한 효과를 얻으려면 C# 스레드로 무엇을해야합니까?

+0

스레드 B가 무슨 일을하든 스레드 B를 중단하고 싶습니까? 또는 스레드 B가 주기적으로 신호가 보내 졌는지 확인하기를 원합니까? –

+0

스레드 B가 무엇을하던간에 스레드 B를 중단하고 싶습니다. 그렇지 않으면, 모든 waithandle 시설은 괜찮을 것입니다. – cooldfish

답변

0

실행중인 스레드를 임의로 차단할 수 없으며 차단중인 스레드 만 차단할 수 있습니다.

this explanation을 살펴보십시오.

PulseWait를 참조하십시오 : 나는 그들이 당신의 요구에 정확하게 적합하고 제대로 모르겠어요하지만 당신이에 관심이있을 수 있습니다 무엇

3

리눅스에서 signal을 모르지만 ManualResetEvent을 사용하여 다른 스레드에 신호를 보낼 수 있습니다.

0

Monitor 클래스의 두 가지 방법이 있습니다.

0

. 닷넷 세상은 WaitHandles을 사용합니다.이 클래스는 스레드가 신호를받을 때까지 스레드를 차단할 수있는 메서드를 제공하고 차단 스레드가 "깨어나야"한다는 신호를 보내는 메서드를 제공합니다.

AutoResetEvent, ManualResetEvent, MutexSemaphore과 같이 많은 구체적인 구현이 있습니다.