我需要同步的方法調用,使線程可以500ms的睡眠之後,調用此方法的線程調用。我有10個線程可能同時運行,因此只需簡單介紹Thread.Sleep(500)
就沒有幫助。我怎樣才能以最簡單的方式實現這一目標?你有什麼建議?方法從一個特定延遲
_pool = new Semaphore(0, 10);
_pool.Release(10);
...
pool.WaitOne();
Thread thr = new Thread(WorkerThread);
t.Start(param);
...
public static void WorkerThread(object parameterData)
{
...
MethodToBeSynced();
...
_pool.Release();
}
我不明白您的要求,對不起。爲什麼不能將Sleep(500)放在方法代碼的頂部? – 2013-02-25 12:32:24
假設兩個線程同時啓動。如果他們同時來到這個「睡眠(500)」行,他們都會等待500毫秒,並最終同時調用我的方法。不過,我想的是,如果一個線程執行這種方法,其他線程應該等待500毫秒,並開始執行。(這應該是有效的,當然線程的其餘部分,如果他們試圖調用該方法) – Alpay 2013-02-25 12:43:16
所以方法只能每500毫秒執行一次?聽起來很奇怪,不是嗎? – Arno 2013-02-25 12:50:08