事件触发机制

问题是这样的,我在一个线程中用while一直检查一个全局的队列是否不为空,这样一来cpu使用率一下子就飚的100%,还不下来!我想用事件触发机制(libevent)去处理这个问题,但是不知道这个时间该怎么定义。

作者: sssmmm200   发布时间: 2011-02-16

在那个队列实现写的地方加个事件,每写一次就设一次事件,另外整个线程在那儿等事件,等到就表示队列里有数据了

作者: year2002   发布时间: 2011-02-16

MFC自定义一个消息,加个消息响应函数处理队空的情况,队列的pop操作发现队空则post一个msg出去,剩下的系统会帮你做。

作者: qq120848369   发布时间: 2011-02-16

引用楼主 sssmmm200 的回复:
问题是这样的,我在一个线程中用while一直检查一个全局的队列是否不为空,这样一来cpu使用率一下子就飚的100%,还不下来!我想用事件触发机制(libevent)去处理这个问题,但是不知道这个时间该怎么定义。
加入事件是要有文件句柄的,我怎么获得写对列的句柄呢

作者: sssmmm200   发布时间: 2011-02-16

Platform: windows
Global Semaphore: HANDLE g_sem = NULL;

Init : g_sem = CreateSemaphore(****);

Thread 1:

while(true)
{
  WaitForSingleObject(g_sem,INFINIT);
  // do something
}

Thread 2:

while (//do something)
{
  ReleaseSemaphore(g_sem, 1, ***);
}

作者: zhengjiankang   发布时间: 2011-02-16

4楼的,你这样做thread1和thread2阻塞那了,一直查询,cpu会罢工的,我要解决的问题就是这个,你又回到问题那了

作者: sssmmm200   发布时间: 2011-02-16

google一下通知模式
当队列有操作的时候,通知一下

作者: ouyh12345   发布时间: 2011-02-16