所以我想了解一下虛幻引擎在Windows OS上的訊息處理代碼,在訊息泵送代碼中沒有發現MsgWaitForMultipleObjects或MsgWaitForMultipleObjectsEx函式的頻繁使用。引擎訊息泵是這樣的:
MSG Message;
// standard Windows message handling
while(PeekMessage(&Message, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
對于背景關系,此代碼將每幀運行 1 到 3 次,這意味著代碼將在整個應用程式的運行時間內平均每 2 到 5 毫秒執行一次。A)這是否使等待功能變得不必要?還是我在這里遺漏了什么!
B)在處理傳入訊息之前,是否有任何粗略估計應用程式可能忙于“其他事情”的時間?例如,如果應用程式僅每 50 毫秒處理一次訊息,這是一種不好的做法嗎?或者這是一種合理的方式嗎?如果周期變成 500 毫秒等等呢?
uj5u.com熱心網友回復:
如果您需要在單個執行緒中同時處理視窗訊息處理和內核句柄或警報等待,請使用 MsgWaitForMultipleObjects/etc。如果您只進行訊息處理,則只需使用普通的基于 GetMessage 的訊息回圈,如果只進行內核句柄或警報等待,則酌情使用 WaitForMultipleObjects。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/460354.html
