CEvent的setEvent方法到底起什么作用?
最近修改一个关于线程的工程,由于对线程不太了解所以测试时出现很多bug。
我怀疑是CEvent.SetEvent()的问题,因为修改时删除了不少这个函数的调用。
希望大家帮解释一下,这个setEvent方法竟什么时候调用?到底起什么作用?
[解决办法]
晕倒,你随意删除这个当然有问题。event是用来同步不同线程的。一旦一个线程结束了自己对全局资源的使用,他通过调用SetEvent通知别人可以使用了。如果这个被删了,其他线程将被阻塞
你不懂的代码就敢随便删除,你也太勇敢了
[解决办法]
当一个线程里调用了::WaitForSingleObject(pEvent->m_hObject, INFINITE);时,会在这句上等待,而不往下操作,这时你就要用SetEvent将这等待改变,让线程能继续往下执行;
总的来说,这是用于线程同步的