事件触发机制
问题是这样的,我在一个线程中用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)去处理这个问题,但是不知道这个时间该怎么定义。
加入事件是要有文件句柄的,我怎么获得写对列的句柄呢
问题是这样的,我在一个线程中用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, ***);
}
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