A线程向B线程秒发100000条消息,B线程把消息写到磁盘。在B线程用个链表从尾部接收消息,另外有个循环
while(1)
{
关键是这里代码怎么写?//从链表头开始写
}我的意思是while循环不要一直空转,等有消息进入链表队列后再开始写文件,
应该用什么方法??
谢谢。
while(1)
{
关键是这里代码怎么写?//从链表头开始写
}我的意思是while循环不要一直空转,等有消息进入链表队列后再开始写文件,
应该用什么方法??
谢谢。
解决方案 »
- 共享Unicode与ANSI字串转换函数
- 请问MFC中刷新client area的问题
- 请教高手, 用过MIDL的immediatebind属性吗?
- 如何在vc2005下编译64位程序?
- 看似简单的问题
- 为什么在OnPaint()函数中执行Invaildate()和UpdateWindow() ?
- 请问updateData函数的作用!
- MCI命令怎么用?MCI控件怎么用?回答对马上给分,谢谢!
- 非常简单的代码,哪里出错啊
- 谁有WinSock网络编程经络pdf电子书
- CMemoryException错误,中断位置afxtls.cpp文件CThreadSlotData::GetThreadValue(int nSlot)
- UDP IO重叠模型+完成例程的问题?
while(1)
{
}
测试了一下cpu 利用率高达50%,
估计用死循环的方法不好。
得加上个 waitsigleobject 之类的语句。
但是每发次消息,set... 一次也不好。怎么解决?
收不用加sleep,最好每隔一段时间写一次硬盘,不好每条写一次
网络线程:
收到条消息,
锁定buffer
if(buffer未满)
把消息写到buffer
else
{
解锁buffer
sleep(2000);
锁定buffer;
}
if(消息结束)
写条结束的消息到buffer
解锁buffer;取网络消息线程:
while(1)
{
锁定buffer;
从buffer取消息;
if(buffer满 || 取出的消息== 结束)//缓冲满了或者消息发完了才一次性写文件
写buffer到文件;
解锁buffer;
sleep(1);//防止cpu占100%
}