我想知道是否有人熟悉用戶模式中的同步機制,通過這種機制,應用程序可以註冊一個「回調」函數,當另一個應用程序信號它... 我不介意在一個仲裁線程的回調。從另一個進程在用戶模式下回調,不帶額外線程
假設我有很多「工人」進程並行,並且想通知他們一個變化(無需加載數據),每個進程都需要做一些內部更新。
直接的方法是在每個線程中創建另一個線程,並有一個無限循環,等待全局事件並在之後調用回調函數。爲了表明這一點,一個過程只需要發出這個全球事件的信號。
問題是我在這個項目中會有很多並行進程,我不想爲了實現這個而將線程* n進程添加到系統中,即使它們大多數都是暫停的。
我發現的當前「解決方法」是保存我自己的「虛擬」註冊表項,並且每個進程都將「註冊註冊通知回調」,當一個應用程序想要通知其他應用程序時它會觸發寫入到這個鍵...和Windows會回調註冊到這個通知的每個進程。
還有其他想法嗎?
他們可以檢查一個互斥評論狀態,而不是必須阻止。或者每個線程都可以運行一個消息循環,你可以使用'SendThreadMessage()' – Deanna
我想你可以用異步管道設計一些客戶/系統模型。但這會增加程序的複雜性。如果只有一個單一的信號,並且你不可能將IPC擴展到那以外,那麼可能更像你的註冊解決方案那樣簡單些。 – Lundin
那麼你可以將此功能添加到已存在的線程嗎?額外的輸入信號或Windows'WM_COPYDATA'消息? –