社区
英特尔边缘计算技术
帖子详情
Intel的朋友帮个忙,求多核或者SMP平台下最快的同步锁
danscort2000
2007-07-30 09:21:39
windows平台
多核心或者SMP平台
求最快的用户态同步锁
目前用的是 critical_section
在单核心平台,确实很快,但是换到多核心或者SMP平台,效率下降了10倍,几乎和内核对象一样慢,
Intel的朋友有没有好的同步锁?
boot::mutex快吗?
这个BOOST没装过,不知道在WIN 平台是映射到什么东西
...全文
520
12
打赏
收藏
Intel的朋友帮个忙,求多核或者SMP平台下最快的同步锁
windows平台 多核心或者SMP平台 求最快的用户态同步锁 目前用的是 critical_section 在单核心平台,确实很快,但是换到多核心或者SMP平台,效率下降了10倍,几乎和内核对象一样慢, Intel的朋友有没有好的同步锁? boot::mutex快吗? 这个BOOST没装过,不知道在WIN 平台是映射到什么东西
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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++网络库 学习笔记 第三章 多线程服务器的适用场合与常用编程模型
本文中的多线程服务器指运行在Linux上的独占式网络应用程序。硬件
平台
为
Intel
x86-64系列的
多核
CPU,单路或双路
SMP
(Symmetric Multi-Processing,对称多处理,它是一种
多核
处理器架构,其中多个CPU核心共享系统的内存和其他资源,以协同执行并行计算任务)服务器(每台机器一共拥有四个核或八个核,十几GB内存),机器之间用千兆以太网连接。这大概是作者写作时民用PC服务器的主流配置。不考虑分布式存储,只考虑分布式计算,系统的规模大约是几十台到几百台服务器之间。 进程(proce
Window API -- InitializeCriticalSectionAndSpinCount()
实际上对 CRITICAL_SECTION 的操作非常轻量,为什么还要加上旋转锁的动作呢?其实这个函数在单cpu的电脑上是不起作用的,只有当电脑上存在不止一个cpu,或者一个cpu但
多核
的时候,才管用。 如果临界区用来保护的操作耗时非常短暂,比如就是保护一个reference counter,或者某一个flag,那么几个时钟周期以后就会离开临界区。可是当这个thread还没有离开临界区之前
多线程的那点儿事
出处:http://blog.csdn.net/pizi0475/article/details/17627631 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 (基础篇) 多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程?当然,要了解到多进程,就要
性能调优攻略
关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。 在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的《代码优化概要》,这篇文章基本上告诉你——要进行优化,先得找到性...
每个程序员都应该了解的 CPU 高速缓存
英文原文:Memory part 2: CPU caches 来源:oschina [编者按:这是Ulrich Drepper写“程序员都该知道存储器”的第二部。那些没有读过第一部 的读者可能希望从这一部开始。这本书写的非常好,并且感谢Ulrich授权我们出版。 一点说明:书籍出版时可能会有一些印刷错误,如果你发现,并且想让它在后续的出版中更正,请将意见发邮件到lwn@lwn.net
英特尔边缘计算技术
568
社区成员
7,024
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章