我有一個C#應用程序,需要在不中斷數據流的情況下將數據輸入流熱切換到新的處理程序類。如何強制多個命令在相同的線程時間片中執行?
要做到這一點,我必須執行在單個線程中的多個步驟而沒有任何其他線程(最所有數據recieving螺紋的)以在它們之間運行由於CPU切換。
這是一個簡化版本的情況,但它應該說明問題。
void SwapInputHandler(Foo oldHandler, Foo newHandler)
{
UnhookProtocol(oldHandler);
HookProtocol(newHandler);
}
這兩行(脫鉤和鉤)必須在相同的CPU執行切片,以防止任何從分組的情況下,獲得通過另一個線程在它們之間執行英寸
我怎樣才能確保這兩個命令運行squentially使用C#線程方法?
編輯
似乎有一些混亂,所以我會盡量更具體。我並不是說同時執行,就是在同一個cpu時間片內執行,以便在這兩個完成之前不執行任何線程。一個鎖不是我正在尋找的,因爲這隻會阻止這個代碼在兩個命令運行之前被再次執行。在完成這些命令之前,我需要阻止任何線程運行。另外,我再次說這是我的問題的簡化版本,所以不要試圖解決我的例子,請回答這個問題。
您不應該關心託管代碼中的處理器調度問題。有可能有更好的方法來做你想做的事。你能提供更多的細節來說明你想達到的目標嗎? – Anton 2009-11-19 18:31:24
您不希望它們同時運行 - 您希望它們順序運行而不會中斷。同時意味着它們都在同一時間運行。 – Aaron 2009-11-19 18:33:13
好的 - 你的問題起初是誤導性的。你爲什麼不鎖定那些你不希望超過一個線程訪問的資源? – RichardOD 2009-11-19 18:45:08