社区
进程/线程/DLL
帖子详情
多线程同时写队列问题, 在线等,一定结贴,顶者有分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
hamimelon
2005-08-30 11:39:47
多个线程在同一时刻对一个队列进行写处理,我加了锁,可是CPU的占用率达100%
4个线程的时候没问题,CPU占用率不高10%左右
可是8个或更多线程的时候CPU的占用率就高达100%,但对队列还是正常能写数据
请问那位大侠有个这方面的经验,能解决CPU耗用的问题,多谢!
...全文
164
8
打赏
收藏
多线程同时写队列问题, 在线等,一定结贴,顶者有分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
多个线程在同一时刻对一个队列进行写处理,我加了锁,可是CPU的占用率达100% 4个线程的时候没问题,CPU占用率不高10%左右 可是8个或更多线程的时候CPU的占用率就高达100%,但对队列还是正常能写数据 请问那位大侠有个这方面的经验,能解决CPU耗用的问题,多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hamimelon
2005-08-30
打赏
举报
回复
线程是一个回调函数
我用的是ACE的队列,它会自锁的
大致代码
void CALLBACK readNetStreamCallBack_TM2(void *context, DWORD nChannel, PBYTE pBuff, DWORD Len)
{
....
RecordFileInfo mFileInfo; //一个结构体信息
mFileInfo.nChannel = nChannel;
ACE_OS::strcpy(mFileInfo.szFileName,sFileName);
g_database_task.put_q(&mFileInfo, sizeof(mFileInfo)); //入队,如果我去掉这句话,
//程序所耗CPU就很少,
....
}
//线程入队函数
int GE_Database_Task::put_q(void *param, size_t size)
{
ACE_Message_Block *mb;
if (size == 0)
{
ACE_NEW_RETURN (mb, ACE_Message_Block(size,ACE_Message_Block::MB_STOP),0);
}
else
{
ACE_NEW_RETURN (mb, ACE_Message_Block(size),0);
mb->copy((const char *)param, size);
}
if (this->putq(mb) == -1)
{
mb->release();
}
mb = NULL;
return 0;}
dirdirdir3
2005-08-30
打赏
举报
回复
检测一下线程是否都进入挂起的状态了。
goodboyws
2005-08-30
打赏
举报
回复
和线程数目关系很大么,代码拿来看看
JonneyR
2005-08-30
打赏
举报
回复
不太了解,学习了,顺便顶一下
DentistryDoctor
2005-08-30
打赏
举报
回复
代码呢?
线程不要弄成"Busy loop"哟!
Tranquillo
2005-08-30
打赏
举报
回复
用spy++看看你那些线程的状态
不知道你用的什么锁定方法,换一种锁定方法看看
younggle
2005-08-30
打赏
举报
回复
把主要代码贴出来。
线程里面注意Sleep
casinosun
2005-08-30
打赏
举报
回复
线程多了,再等待,cpu应该高
Java开发技术大全 电子版
8.4.4生产者-消费者
问题
实例284 8.5本章小结287 第9章运行时类型识别288 9.1RTTI的作用288 9.2用Class类来加载对象289 9.3使用getClass()方法获取类信息290 9.4使用类标记292 9.5使用关键字instanceof判断...
asp.net知识库
如何解决ACCESS中SELECT TOP语句竟然返回多条记录的
问题
? Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性
问题
(2) Using...
JAVA
多线程
精讲下
通过本门课程的学习你可以深刻理解Java
多线程
的原理及实现运行机制,深刻学习
多线程
的生命周期、调度、控制等内容。
多线程
精讲下课程内容涵盖如下:l 线程的同步(线程安全
问题
)l 线程的死锁l ...
面试必问!
多线程
并发
问题
多线程
并发
问题
,基本是面试必问的。 大部分同学应该都知道Synchronized,Lock,部分...为什么
多线程
同时访问(读
写
)同个变量,会有并发
问题
? Java 内存模型规定了所有的变量都存储在主内存中,每条线程有自己的工
阿里面试官:说说
多线程
并发
问题
多线程
并发
问题
,基本是面试必问的。 大部分同学应该都知道Synchronized,Lock,部分...为什么
多线程
同时访问(读
写
)同个变量,会有并发
问题
? Java 内存模型规定了所有的变量都存储在主内存中,每条线程有自己的工
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章