2、并发编程中的共享对象、同步及协调问题解析

并发编程中的共享对象、同步及协调问题解析

1. 并发编程的挑战与基础概念

在当今的编程领域,并发架构虽在不断发展,但目前还难以达到顺序架构那样高效的抽象程度,因此程序员在进行并发编程时需格外谨慎。

在并发编程中,共享对象和编程工具是重要的组成部分。不同的对象和工具能帮助我们理解更高层次的问题,例如自旋锁可用于说明争用情况,链表能体现锁在数据结构设计中的作用,这些问题对程序性能有着重要影响。我们期望通过对这些问题的学习,能将所学应用到具体的多处理器系统中。

在编程语言的选择上,这里采用了 Java 语言。当然,也有其他合适的语言可供选择。在附录中会解释 Java 语言所表达的概念如何在其他流行语言或库中体现,同时还会提供多处理器硬件的入门知识。在阐述过程中,我们更关注程序和算法的一般趋势,而非具体的性能数值,因为不同的多处理器系统差异较大,在一台机器上表现良好的程序,在另一台机器上可能效果不佳。

每章结尾会提供参考文献,方便读者进行文献调研和进一步阅读,同时还会有一系列练习,帮助读者检验自己的理解程度。

2. 共享对象与同步的实例分析

假设你刚入职,老板要求你使用支持十个并发线程的并行机器找出 1 到 10¹⁰ 之间的所有素数。由于机器是按分钟计费的,你希望程序运行时间尽可能短。

最初,你可能会考虑给每个线程分配相等的输入范围,让每个线程检查 10⁹ 个数,代码如下:

void primePrint {
    int i = ThreadID.get(); // thread IDs are in {0..9}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值