任何創造性的想法,以避免產出或睡眠死鎖與合作/非搶先多任務而不做O/S Thread.Sleep(10)?通常,良率或睡眠呼叫將回調到調度程序中以運行其他任務。但是這有時會產生僵局。合作/非搶先式線程避免死鎖?
一些背景資料:
此應用對速度和巨大需求,到目前爲止,相對於同行業其他系統它的速度極快。其中一種速度技術是協作/非搶先式線程,而不是從O/S線程切換上下文的開銷。
高層次設計優先級管理器,根據優先級和處理時間調用任務。每個任務執行一次工作「迭代」,並返回以再次在優先隊列中等待。
與非搶佔式線程棘手的是,當你想要一個特定的任務停止在工作中,繼續之前從不同的任務等待其它一些事件做什麼。
在這種情況下,我們有3個任務,A B和C,其中A是必須同步B和C首先活性的控制器,A開始B和C.則B產生所以C被調用。當C收益率,A看到他們都是不活躍的,決定B是運行的時間,但沒有C的時間。 B井現在停留在一個叫做C的產量上,所以它永遠不會運行。
有趣的問題。標記了這個C#,因爲你的答案似乎表明那是你正在使用的語言。 – 2015-10-17 18:08:00