2
A
回答
7
您可以使用帶有線程ID的PostThreadMessage。如果PostThreadMessage返回false並且GetLastError返回ERROR_INVALID_THREAD_ID
,則線程標識無效或線程沒有消息隊列。
更多信息http://msdn.microsoft.com/en-us/library/ms644946(VS.85).aspx
0
你可以嘗試使用AttachThreadInput從裏面確實有一個消息隊列線程工作。如果在調用中引用的任何線程沒有隊列,我相信AttachThreadInput會失敗。請注意,AttachThreadInput可能因其他原因失敗。
2
在一個多線程的世界裏,你不能正確地考慮的事情,而你正在尋找的是可以改變的。線程消息隊列特別有趣;它們是在線程需要它們時創建的。所以你可以得到的唯一答案是「不是當我上次檢查」。
因此,如果沒有線程消息隊列,大多數Windows API將不會真正失敗。他們只是創造它。有一個例外,PostThreadMessage
。這需要爲另一個線程創建一個線程消息隊列,可能與其他線程創建它自己的線程消息隊列同時發生。因此,它是唯一可能會失敗的API。
但PostThreadMessage
失敗不好嗎?這告訴你(通過`GetLastError()),當Windows試圖傳遞你的消息時,這個隊列在重要時刻不存在。
2
相關問題
- 1. 消息隊列多線程
- 2. 是否有最小的消息隊列?
- 3. 消息隊列是否支持多線程?
- 4. 如何判斷WebsphereMQ消息是否傳遞到遠程隊列?
- 5. 如何檢查隊列中是否有消息
- 6. 如何檢查joomla 2.5的消息隊列中是否有消息?
- 7. 消息隊列,C++多線程
- 8. 消息隊列VS線程池
- 9. umask是否會影響消息隊列?
- 10. 從內存轉儲中查找線程消息隊列中的消息數
- 11. 尋找一個最佳的多線程消息隊列
- 12. 如何查看出站MSMQ消息隊列中的消息?
- 13. Windows消息隊列是否以FIFO方式處理消息?
- 14. UNIX消息隊列是否維護消息順序?
- 15. 消息隊列:網絡故障時消息是否丟失?
- 16. 是否有任何免費庫實現類似於MSMQ(Microsoft消息隊列)的消息隊列?
- 17. 沒有本地消息隊列服務器的遠程消息隊列
- 18. 使用消息隊列的線程同步不是爲了
- 19. 如何找回現有的消息隊列ID
- 20. 隊列中沒有消息
- 21. Erlang消息隊列在進程中是否持久?
- 22. Kannel是否有傳入的消息隊列插件?
- 23. 以下私人消息隊列名稱是否有效?
- 24. Ubuntu企業雲是否有SQS消息傳遞隊列等效
- 25. 單個線程是否可以消耗多個隊列?
- 26. 帶有Redis消息隊列的NodeJS - 如何設置多個使用者(線程)
- 27. 線程安全隊列 - 入隊/出隊
- 28. 使用多線程從JMS隊列中消費消息
- 29. Websphere消息隊列
- 30. 消息從隊列
-1,有一點點的競爭條件在這裏。 – MSalters 2009-11-26 14:50:23
@ MSalters。來自MSDN:「發佈消息的線程必須創建消息隊列,否則對PostThreadMessage的調用失敗」。所以對我來說,知道目標線程是否有消息隊列是一種好方法。你看到什麼競賽條件? – jrbjazz 2009-11-26 16:06:56