20、并发排序算法:冒泡排序与奇偶换位排序解析

并发排序算法:冒泡排序与奇偶换位排序解析

1. 冒泡排序并行化分析

在分析并发算法的正确性时,不能仅依赖交错分析,还需考虑串行算法的特性以及串行代码转换可能带来的变化。下面从效率、简单性、可移植性和可扩展性四个方面对并发冒泡排序代码进行评估。

设计因素 评估情况
效率 数组元素的线性访问能预测下一个所需的缓存行数据,若按缓存行边界定义区域数据大小,可消除伪共享。但线性访问和遍历所有可能未排序元素的需求,使缓存无法重用,多线程反复将数组元素加载到缓存中,会导致内存总线数据过多,直接影响算法的可扩展性。
简单性 较差。串行代码和线程代码差异大,区域实现复杂,难以让线程互不干扰。不过并非所有排序算法都如此难转换,后续会介绍基于比较交换的其他排序算法的并发版本,它们更易理解和并行化。
可移植性 不佳。可将代码转换为 Pthreads,但对于任务分解,使用隐式线程库较难。使用 OpenMP 或 Intel TBB 的显式任务设施时,协调线程不重叠的问题仍存在。分布式内存实现需基于数据分解的算法,数据块间的数据移动会产生大量数据流量,即使在平均情况下也难以接受。
可扩展性 较差。线程数量和区域数量、同步开销以及线程等待锁的时间之间存在权衡。区域越多,可使
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值