在OOP中工作時,從工作線程到win32主線程的正確通信/最佳方式是什麼?從工作者線程到win32主線程的正確通信方式
我的工作線程在一個循環中運行,而對於某些事件,包括當線程結束,它需要告訴主線程和主線程響應做某些事情。
當前我正在使用WM_APP來自工作線程的消息與主線程進行通信。 雖然看起來不整齊。
在OOP中工作時,從工作線程到win32主線程的正確通信/最佳方式是什麼?從工作者線程到win32主線程的正確通信方式
我的工作線程在一個循環中運行,而對於某些事件,包括當線程結束,它需要告訴主線程和主線程響應做某些事情。
當前我正在使用WM_APP來自工作線程的消息與主線程進行通信。 雖然看起來不整齊。
我假設主線程是GUI線程。你可以看看類似主題的this SO thread。
基本上沒有將工作線程傳遞給主線程的標準方式。你只專注於你的程序工作正常或不是這樣。關於線程,後臺線程或者你可以說工作線程基本上用於多任務目的意味着你想做一些非常重的事情,比如從光盤讀取大文件,然後你可以使用線程。
現在同時使用線程是你的線程同步您如何進行同步線程有很多問題要與資源分配有關而這一切首先了解如何工作的,而你的分配資源的線程一個很重要的事情。
欲瞭解更多信息,你可以閱讀Using Worker Threads
如果您習慣使用通過Windows消息通信,這是完全合理和罰款。它具有不需要同步的好處。額外的通信可以通過線程安全的對象(主要需要鎖定),共享內存,套接字,...在他們的線程部分檢查衆所周知的C++庫的可能性。
通過Windows消息進行通信是最簡單的方法之一。這本身就是一個不應該被低估的價值,如果你不需要平臺獨立性或者一種能夠給你提供比Windows消息更多可能性的通信形式 - 堅持下去。
沒有「正確的方法」。一切合理可靠的工作都可以。 –
PostMessage/SendMessage很好,因爲如果Tobias沒有先到那裏,我會回答。 –