2012-04-17 92 views
1

我不太確定這是否是正確的方法(im愛好者)。我想將消息發佈到循環GetMessage()的工作線程,並根據消息做些什麼。我知道我必須使用posthreadmessage()與該工作線程的句柄。使用來自不同線程的posthreadmessage()

這裏是我的問題:

我可以使用

PostThreadMessage(idWorkerThread, WM_COMMAND, (WPARAM)0, (LPARAM)0)) 

從多個不同的線程?我知道這可能會導致消息從不同線程同時寫入工作線程消息隊列。這是一個問題還是很好?基本上我想要一個N-> 1線程間通信。

+0

只需添加Pete發佈的內容,如果在Windows或任何其他多任務處理器上的OS調用都是線程安全的,則無需擔心。根據定義,它們是。如果他們不是操作系統會很快炸燬,你永遠不會看到你的桌面。唯一的例外是子系統中的晦澀之處,比如設置進程調試鉤子。像PostThreadMessage這樣的主流內核調用是100%線程安全的。 – 2012-04-17 11:55:28

回答

1

PostThreadMessage是線程安全的,所以你會沒事的。它是一個很好的做法。另一種選擇是使線程等待事件或條件變量,並具有通過適當的同步將事件推送到隊列的功能。

+0

非常感謝這個信息:) – user912877 2012-04-17 08:21:03

相關問題