我記得有一種方法可以做到這一點,類似於unix信號,但沒有如此廣泛地使用。但不記得這個詞。沒有使用事件/互斥鎖:線程只是在隨機位置中斷,函數被調用,並且當它返回時,線程繼續。如何在另一個線程的上下文中調用一個函數?
回答
你可以搜索RtlRemoteCall
,但它是一個沒有記錄的例程。 Windows中的APC在語義上類似於Unix信號,但APC要求目標線程處於可警告狀態才能交付,但不能保證始終滿足此條件。
剛剛嘗試過RtlRemoteCall。顯然,如果一個線程處於不可警告的等待狀態(同步ReadFile),則不會調用該函數。 – basin
Windows有Asynchronous Procedure Calls它可以在特定的上下文中調用函數線。 APC不會在隨機的地方中斷一個線程(這很危險 - 線程可能正在寫入文件或獲取鎖或處於內核模式中)。相反,當調用線程通過調用特定函數進入可變等待時,將調度APC(請參閱APC文檔)。
如果您需要調用的代碼在一個特定的線程的原因是因爲你與用戶界面交互,這將是更直接的send或post窗口消息要更新的窗口句柄。窗口消息總是在創建窗口的線程中處理。
+1,yup - 用於GUI的PostMessage/SendMessage,否則帶有可警告等待的APC。 –
- 1. 如何從另一個線程在主線程上調用函數vb
- 2. 如何在另一個線程中運行一個函數
- 3. 在另一個線程上調用非靜態類函數
- 4. 如何在另一個函數中調用另一個類的函數
- 5. 如何調用一個funtion在另一個函數中的Node.js
- 6. 從另一個函數調用另一個函數在這個
- 7. 如何在另一個函數中調用多個函數C
- 8. 調用一個函數在另一個
- 9. 如何調用另一個函數內的一個函數Jquery
- 10. 如何確保在另一個線程上調用IXMLHTTPRequest2回調?
- 11. 在PL/PGSQL的另一個函數中調用一個函數
- 12. 如何在一個類中調用另一個函數(方法)?
- 13. 如何在同一個對象中調用另一個函數?
- 14. 如何從另一個函數調用一個數字到一個函數中?
- 15. 如何在調用另一個函數後返回上一個函數?
- 16. 如何在Python的另一個函數中調用函數?
- 17. 如何在extjs4的另一個函數中調用函數?
- 18. 線程調用另一個類中的函數
- 19. 如何調用一個函數,它在python的另一個函數中定義?
- 20. 在php中,如何從另一個類中的另一個類調用函數?
- 21. 在另一個函數中調用一個函數。 C#
- 22. 從另一個JS文件中的另一個函數調用JavaScript函數
- 23. 如何將變量從另一個函數調用到另一個函數中
- 24. 一個線程如何在另一個線程中被殺死
- 25. 如何在另一個.m文件中引用一個函數?
- 26. 如何從另一個文件中調用另一個Jquery函數
- 27. 如何在另一個函數中使用一個函數值?
- 28. 用另一個線程上的方法/函數打開另一個表單?
- 29. 如何調用另一個JavaScript函數
- 30. 如何調用另一個函數
你確定它是另一個線程上下文中的函數嗎? Windows可以很容易地在另一個進程中運行代碼,但在另一個線程中是我從未見過的東西。 – JimR
請不要在標題中加入標籤信息。這裏的標記系統非常擅長對事物進行分類,並且不需要幫助。 :-)請參閱[應該在其標題中是否包含「標籤」?](http://meta.stackexchange.com/q/19190/172661)。謝謝。 –