我在Windows中使用C ++的主要功能上有一段代码,如:
some_handle = dll_generate_handle;
while(true) {
if(WaitForSingleObject(some_handle,100)){
//CODE I AM INTERESTED ABOUT
}
}
信号来自dll功能。我尝试以下一种方式将此原则移植到框架中:
void eventCheckingWrapper(){
i1.event_checking();
}
std::thread t(&ClassName::eventCheckingWrapper, &i2);
线程运行良好但没有信号到达,总是达到超时并且线程在其while循环中重新开始。
我怎样才能正常运行?
我解决了这个问题。所以Remy Lebeau所说的一切都是真的。最后,dll具有通过我之前必须调用的事件句柄来激活信号接收的功能。所以实际上没有信号来,但只是为了提供信息,我可以确认在这种调试经验基本上是“父”线程需要在Windows中保持活动,winapi WaitForSingleObject()保持事件的状态,如果它没有等待并且新的重新设置事件不会改变其状态(保持信号),只要没有线程等待它(之后它变为无信号模式),所以不会出现时间问题。事实上,应该检查3d方软件提供的事件是否关心创建它的线程,以及因此检索句柄时没有问题。谢谢!