是否有可能在多處理器環境(PC)中將一個Windows進程配置爲僅在一個處理器上運行(親和性掩碼= 1或SetProcessAffinityMask(GetCurrentProcess(),1)
),但其線程是否在其他處理器上生成?只能在一個處理器上進行運行只能在其他處理器上運行線程嗎?
(問題來自於討論一個公司開始,使用同步對象(事件,互斥,信號)和WinAPIs,像WaitForSignleObject
有關,等等,特別是SignalObjectAndWait
爲此MSDN指出
「注意」信號「和‘等待’,不能保證作爲原子操作來執行 。線程 主叫SignalObjectAndWait開始在第二對象上其等待之前在其他處理器上執行線程可以 觀察所述第一對象的所述信號狀態」
這是否意味着對於單處理器它保證是原子?
P.S. Windows上下文切換有什麼區別,有多個處理器或單核處理器與更多真實核心?
P.P.S.請耐心等待這個問題,如果我沒有使用確切的和具體的條款 - 這對我來說仍然不是很好。
「親和力掩碼= 00」沒有什麼幫助記錄您的問題。 –
好吧,讓它成爲1,我會更新問題。 – ALZ