《多处理器编程的艺术》
多处理器编程的艺术
韩运畅
这个作者很懒,什么都没留下…
展开
-
7.5 队列锁对自旋锁的优化
通过避免高争用的自旋锁依然有下面两个缺点:1. 依然有cache一致性流量问题,尽管比未优化的低2. 一次争抢,大量的线程失败,cpu利用率低队列锁为何能对其优化:1. 每次争抢只有队列内的一个线程与外部的线程,一次争抢不会产生大量失败。 同时失败的线程会进入队列休眠,等待前驱节点将其唤醒,提高了cpu的利用率。2. 队列内每次只有一个线程会争抢锁,因此每次最多触发一次cache失效...原创 2020-05-11 10:53:31 · 111 阅读 · 0 评论 -
7.3 cas与流量风暴
基于锁总线的cas原语,有两点影响性能你的地方,总线延迟,流量风暴总线延迟cpu必须要通过总线(bus)和主存通信,而cas就是通过在总线上发出一个广播,锁住它,从而保证它的原子性语义。当短时间内大量大量线程操作cas的话,就会产生总线风暴。从而会延迟其他线程的执行,更坏的情况是,这有可能延迟锁的释放。流量风暴当锁被释放时,该线程经flag写为false,会使得大量在进行cas操作的线程中cache失效,他们都需要从主存中重新加载数据,马上,一个线程获取锁成功,将flag修改为了true,原创 2020-05-11 10:26:42 · 720 阅读 · 0 评论 -
2.2 临界区 互斥
临界区:每个进程访问临界资源的那段代码称为临界区,其中临界资源是共享资 源,每次只允许一个进程访问, 属于临界资源的硬件有打印机、磁带机等,软件 有消息缓冲队列、变量、数组、缓冲区等。互斥:要么进程A执行完临界区的代码,B进入。要么相反。无饥饿就意味着无死锁。...原创 2020-05-11 09:50:24 · 151 阅读 · 0 评论 -
1.5 Amdahl定律
Amdahl定律:并行任务获得的加速比是有限的,受限于程序中必须要串行执行的部分。原创 2020-05-11 09:27:13 · 266 阅读 · 0 评论 -
1.1 什么是互斥问题
确保一个时刻只允许一个线程执行特定代码段的问题称为互斥问题,他是多处理器程序设计中经典的协作问题之一。原创 2020-05-11 09:24:46 · 656 阅读 · 0 评论 -
1.1一个很好的例子:工作分配可能并不均匀
考虑一下问题,假如有10个处理器,求0-10000d内的素数,最自然的方式是,每个处理器上处理1000个数。问题是,这种分配方式可能并不是公平的,考虑0-1000与9000-10000的情形。所以可以这样设计,每个线程工作完了,就去取一个数来计算。...原创 2020-05-11 09:18:47 · 356 阅读 · 0 评论