如何將數據傳遞給主應用程序的線程?如何將數據(結構)作爲消息傳遞給線程。
在主應用程序中,我創建了一個處理錯誤消息的線程。在主應用程序中處理數據時,如果出現錯誤,它會生成一條錯誤消息並將其填充到結構中。這個錯誤消息(結構)需要傳遞給線程,然後進一步處理它,主應用程序應繼續工作。我正在嘗試在Windows平臺上的C中執行此操作。
在我的應用程序中只會運行一個線程。目前我已經定義了一個全局變量結構(myData),並且我正在通過使用PostThreadMessage。
struct myData errorData;
從主應用程序發佈使用
PostThreadMessage(ErrorLogId, THRD_MESSAGE_EXIT , 0 , (LPARAM)&errorData);
的消息在線程我有
MsgReturn = GetMessage(&msg, NULL, THRD_MESSAGE_SOMEWORK, THRD_MESSAGE_EXIT);
在它工作正常的時刻。但是,如果處理錯誤消息需要更多時間,那麼主應用程序可能會在全局結構errorData中獲取新錯誤並更新數據。
我可以使用鎖定機制,但我不能停止主應用程序,直到線程完成處理。如何傳遞數據而不將其作爲全局變量?