因此,我试图理解Windows上的“虚幻引擎”的消息处理代码,并且在消息抽取代码中没有发现函数MsgWaitForMultipleObjects或MsgWaitForMultipleObjectsEx的任何频繁使用。引擎信息泵是这样的:
MSG Message;
// standard Windows message handling
while(PeekMessage(&Message, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
对于上下文,此代码将运行每帧一至三次,这意味着在整个应用程序的运行时间内,代码平均每2到5毫秒执行一次。( A)这是否使等待功能变得不必要?或者我在这里漏掉了什么!
( B)对应用程序在处理传入消息之前忙于“其他事情”的时间是否有粗略的估计?例如,如果一个应用程序仅每50毫秒处理一次消息,这是一种糟糕的做法吗?或者这是一种合理的做法?如果周期变成500毫秒呢?
发布于 2022-04-18 21:22:44
如果需要在单个线程中处理窗口消息处理和内核句柄或警报等待,请使用MsgWaitForMultipleObjects/etc。如果您只进行消息处理,那么只需使用一个普通的基于GetMessage的消息循环,如果只执行内核句柄或警报等待,则可以酌情使用WaitForMultipleObjects。
https://stackoverflow.com/questions/71915644
复制相似问题