#define MAX_BUF 100
BOOL habitus=TURE;
long *m_local,*m_remote;
long m_read,m_write;//m_remote,m_write在其他线程或程序中改变
UINT ReciveInf(LPVOID lpParam)//线程
{
while(habitus)
{
if(m_read!=m_write)
{
                       m_local[m_read]=m_remote[m_write];
                       m_read++;
                       if(m_read>MAX_BUF)m_read=0;
}
//Sleep(0);如果用Sleep(0);可以解决问题但CPU资源为100%
                  //Sleep(1);如果用Sleep(1)也可以实现,CPU也没问题,但达不到软件高速效率
}
return 0;
}我的问题简化了一下,基本就是这样了。
我想请问那个高手给解决一下这个效率问题,比如说把m_read!=m_write交给系统管理,条件不满足时挂起线程,满足时激活线程,(想象中把WaitForSingleObject的第一参数换成m_read!=m_write,呵呵);