社区
英特尔边缘计算技术
帖子详情
Intel的朋友帮个忙,求多核或者SMP平台下最快的同步锁
danscort2000
2007-07-30 09:21:39
windows平台
多核心或者SMP平台
求最快的用户态同步锁
目前用的是 critical_section
在单核心平台,确实很快,但是换到多核心或者SMP平台,效率下降了10倍,几乎和内核对象一样慢,
Intel的朋友有没有好的同步锁?
boot::mutex快吗?
这个BOOST没装过,不知道在WIN 平台是映射到什么东西
...全文
473
12
打赏
收藏
Intel的朋友帮个忙,求多核或者SMP平台下最快的同步锁
windows平台 多核心或者SMP平台 求最快的用户态同步锁 目前用的是 critical_section 在单核心平台,确实很快,但是换到多核心或者SMP平台,效率下降了10倍,几乎和内核对象一样慢, Intel的朋友有没有好的同步锁? boot::mutex快吗? 这个BOOST没装过,不知道在WIN 平台是映射到什么东西
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
danscort2000
2007-08-01
打赏
举报
回复
好象扯远了
我只想要个最快的锁,也就是CPU开销最少的
就象 redleaves(程序员) 说的那种
可以用InterlockedXXXX来实现,
但是一但一次没锁定,那么如何循环?
UNIX好象用yeild?是这个吗?不太清楚,那WIN下是使用Sleep(0)
还是用WHILE死循环等待?或者有其他的指令?总不会用HALT吧
僵哥
2007-08-01
打赏
举报
回复
之所以有各种同步机制存在,根据优胜劣汰原则,从理论上来讲,肯定不存在绝对性优势的东西。关键要从几个点出现,比较推荐的就是使用同一竞争资源的线程分派到相同的处理器(核)当中,对于不同的共享资源访问尽可能在设计逻辑上面分离到不同的处理逻辑组当中,从而达到更高的资源利用率。线程数量非必要时不需要太多,尽可能合理,以减少线程间切换所带来的性能压力。
redleaves
2007-08-01
打赏
举报
回复
TO danscort2000(danscort.yu) :
我写了"在任何情况下".因为如果是一个周期能完成的操作,CPU会一次性锁定总线进来操作,不会出现操作一半再切换成其它操作的问题.而无论是几个CPU,都不可能出现同时进总线的情况.
至于你的多线程问题,那无疑是冲突引起的等待.通常,你这种测试没有什么意义.因为一般不可能会有你测试中那种密集的内存分配,而且是多个线程的....所以正常使用中,也不会有太多冲突.
另外我也写过内存池,在这种高性能的代码中使用锁定机制是很影响效率的,有可能锁定就占用了10%以上的CPU时间.而且有的时候没有必要使用锁定机制..比如把分配器用做STL allocator这种.
另外,小内存分配,系统的分配器是很快的.测试的时候用大块内存.肯定一下就超过它了.这下心里就平衡了.....^_^
danscort2000
2007-07-31
打赏
举报
回复
不是
我用在自己设计的平坦内存池上
在多核心多线程环境下,必须有高效的同步锁
否则意义就不大了
测试在单核心下,速度很快,大于NEW/DELETE N倍
但是在多核心CPU下,由于锁的原因,速度基本和NEW/DELETE打平,顶多只快了一点
不正常
所以想要个最高效的锁
ah__fu
2007-07-31
打赏
举报
回复
个人觉得研究锁无关的数据结构才是王道!
housisong
2007-07-31
打赏
举报
回复
能否不用锁,比如使用数据并行方案
danscort2000
2007-07-31
打赏
举报
回复
Studio 2005
release
2 个或者以上并发 thread 300* 20000 次
对比测试以下就知道了
ppc686
2007-07-31
打赏
举报
回复
critical_section在单核心平台,确实很快,但是换到多核心或者SMP平台,效率下降了10倍.
根本没有的情况,真不知道你是用什么测试得出这个结论的?
danscort2000
2007-07-31
打赏
举报
回复
intel 说在任何情况下,读写单字节,字对齐的单字,双字对齐的双字都是原子操作
这个适合双核心或者SMP平台?
我怎么觉得不是原子操作,不会出现2个核心同时对一个参数写的情况吗?
redleaves
2007-07-31
打赏
举报
回复
intel 说在任何情况下,读写单字节,字对齐的单字,双字对齐的双字都是原子操作(新的CPU还有一些特例).除此之外只有用LOCK前缀锁CACHE或BUS.
而且内核对象之所以慢,主要是切换现场以及一些等待的机制.这是无法避免的,要改进,只能改进你的锁定逻辑.
ysminnpu
2007-07-31
打赏
举报
回复
自己实现,给你些提示:google下ticket lock, queue-based lock
应该能找到些现成的,可能要稍微改下
flyingdog
2007-07-30
打赏
举报
回复
有些同步功能可以自己用汇编实现的。
Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第三章 多线程服务器的适用场合与常用编程模型
硬件
平台
为
Intel
x86-64系列的
多核
CPU,单路或双路
SMP
(Symmetric Multi-Processing,对称多处理,它是一种
多核
处理器架构,其中多个CPU核心共享系统的内存和其他资源,以协同执行并行计算任务)服务器(每台机器...
Window API -- InitializeCriticalSectionAndSpinCount()
其实这个函数在单cpu的电脑上是不起作用的,只有当电脑上存在不止一个cpu,或者一个cpu但
多核
的时候,才管用。 如果临界区用来保护的操作耗时非常短暂,比如就是保护一个reference counter,或者某一个flag,...
性能调优攻略
关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。...
每个程序员都应该了解的 CPU 高速缓存
如果有两个选项让你选择,一个是速度非常快、但容量很小的内存,一个是速度还算快、但容量很多的内存,如果你的工作集比较大,超过了前一种情况,那么人们总是会选择第二个选项。原因在于辅存(一般为磁盘)的速度。...
多线程的那点儿事
多线程可以提高pc的使用效率;讨厌它,因为如果对它处理不好,反而会导致更大的... (02)多线程的哪些儿事(
多核
编程) (03)多线程的哪些儿事(多线程数据结构) (04)多线程的哪些儿事(无锁链表) (...
英特尔边缘计算技术
566
社区成员
7,027
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章