社区
C++ 语言
帖子详情
请教多线程和容器之间的问题
feanren
2015-10-14 10:25:51
cpu是服务器上24核的。
我开了20个线程读一个list里面的数据,大概有300万行,list里面放的是一个结构体。
不做写的操作,只是读和计算。
但是我看cpu的利用率并不高,只有10%左右。
我又写了个测试的代码,开20个线程,每个线程执行int a 加加的操作。
测试的代码,cpu疯长,达到90%。
我想问一下,线程读内存里的大量数据是不是有瓶颈,类似I/O的瓶颈一样。
如何提高cpu的使用率呢?
...全文
121
3
打赏
收藏
请教多线程和容器之间的问题
cpu是服务器上24核的。 我开了20个线程读一个list里面的数据,大概有300万行,list里面放的是一个结构体。 不做写的操作,只是读和计算。 但是我看cpu的利用率并不高,只有10%左右。 我又写了个测试的代码,开20个线程,每个线程执行int a 加加的操作。 测试的代码,cpu疯长,达到90%。 我想问一下,线程读内存里的大量数据是不是有瓶颈,类似I/O的瓶颈一样。 如何提高cpu的使用率呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ztenv
版主
2015-10-14
打赏
举报
回复
怀疑是线程的频繁切换导致了cpu使用率极速上升
赵4老师
2015-10-14
打赏
举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
fefe82
2015-10-14
打赏
举报
回复
开 profiler 看一下吧。
你也需要确认一下你的 list 的实现(或者你的结构体的实现)里是不是有锁。
北风网 从C++起步到MFC实战VC++软件工程师高端培训(服务器端开发方向)332课全
包含八个部分视频,含有代码,资源完整。
多线程
(进阶)
多线程
之间
,数据的读取方
之间
不会产生线程安全
问题
,但数据的写入方互相
之间
以及和读者
之间
都需 要进行互斥。如果两种场景下都用同一个锁,就会产生极大的性能损耗。所以读写锁因此而产生。读写锁(readers-writer lock),看英文可以顾名思义,在执行加锁操作时需要额外表明读写意图,复数读者
之间
并不互斥,而写者则要求与任何人互斥。一个线程对于数据的访问, 主要存在两种操作: 读数据 和 写数据.两个线程都只是读一个数据, 此时并没有线程安全
问题
. 直接并发的读取即可.
List集合
多线程
并发条件下不安全如何解决
List集合
多线程
并发条件下不安全的解决
多线程
的web服务器
之前实现的web服务器,经测试发现实际上是单线程的,每次只能处理一个请求,后一个请求必须要等前一个请求处理完后才能进入到do_*函数中。这样在访问量比较大的时候是不能满足要求的,后来
请教
了一下同事,告诉我说ThreadingMixIn这个类可以实现
多线程
处理请求。自己去试了一下,发现果然可以,而且几乎不用做任何修改,只要在声明server的类中多继承一个父类就行: class SecureHTT...
JNI接口支持
多线程
并发调用的小技巧
在JNI开发过程有这样的一个场景: 用JNI封装调用另一个第三方算法so库,该SO库是能够支持
多线程
并发创建多个处理实例,同时处理数据的。则JNI在封装接口时,也需要注意接口方法并发的情况,这个时候必须尽可能使用局部变量,以免全局变量在某一线程中被修改,导致在另一线程不能按预期执行。 首先看下第三方so库的两个接口方法: /** * 创建对应token的算法处理实例,返回长度为inst_num的void型指针数组insts。 * 此方法需支持并发创建不同token的实例 */ int create_
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章