실버 라이트 4로 개발 중입니다.Silverlight에서 세마포가 없습니까?
스레드가 있습니다. WaitHandles (AutoResetEvent, ManualResetEvent)도 있습니다. 하지만 세마포는 없습니까? 내가 놓친 게 있니?
실버 라이트 4로 개발 중입니다.Silverlight에서 세마포가 없습니까?
스레드가 있습니다. WaitHandles (AutoResetEvent, ManualResetEvent)도 있습니다. 하지만 세마포는 없습니까? 내가 놓친 게 있니?
나는 Semaphore for Silverlight을 만들었습니다.
사실, Silverlight에는 세마포어가 없습니다. SL 용 스레딩 라이브러리는 제한되어 있습니다. 그러나 당신은 매우 쉽게 자신을 만들 수 있습니다. 이 코드는 실제로 스레드 안전 것에 대한 제 선호된다 this post 번째 대답에 기초
public class Semaphore
{
private object Mutex { get; set; }
private int Count { get; set; }
private int Max { get; set; }
public Semaphore(int max = 1)
{
Mutex = new object();
Max = max;
}
public void WaitOne()
{
while (true)
{
lock (Mutex)
{
if (Count < Max)
{
Count++;
return;
}
}
Thread.Sleep(50);
}
}
public void Release()
{
lock (Mutex)
{
if (Count >= 0)
{
Count--;
}
}
}
}
다음은 예이다.
해당 링크의 "녹색"답변은 스레드로부터 안전하지 않습니다. 잠금 기능을 보여주는 버전으로 이동하십시오. –