多处理器编程的艺术,第二版,为用户提供多核编程的权威指南。这个更新版介绍了相对于高效单核编程所需的更高级别的软件开发技能,并包括有效多处理器编程所需的新原则、算法和工具的全面覆盖。这本书是一个理想的资源,学生和专业人员谁将受益于它的关键多处理器编程问题的全面覆盖。
本书的第一部分涵盖了并发编程的原则,展示了如何像并发程序员一样思考,开发基本技能,比如理解操作“发生”的时间,考虑所有可能的交错,以及识别进展的障碍。像许多技能一样——开车、做饭或欣赏鱼子酱——思考必须同时培养,并且可以通过适度的努力来学习。想要立即开始编程的读者可以跳过这一节的大部分内容,但仍然应该阅读第2章和第3章,它们涵盖了理解本书其余部分所需的基本思想。我们首先来看一下经典的互斥问题(第2章)。这一章对于理解为什么并发编程是一个挑战是必不可少的。它涵盖了公平性和死锁等基本概念。然后我们会问并发程序的正确含义是什么(第3章)。我们会考虑几种不同的条件,以及在哪些情况下人们可能会使用每种条件。我们将讨论并发计算所必需的共享内存的属性(第4章),以及实现高并发数据结构所需的同步原语(第5章和第6章)。
我们认为,任何想要真正熟练掌握多处理器编程艺术的人都必须花时间解决本书第一部分中介绍的问题。尽管这些问题是理想化的,但它们提炼出了编写有效的多处理器程序所需的思维方式。最重要的是,它们提炼出必要的思考风格,以避免几乎所有程序员新手在第一次遇到并发时所犯的常见错误。本书的第二部分描述了并发编程的实践。对于本部分的大部分内容,我们用Java给出示例,以避免陷入低级细节的泥潭。但是,我们对这个版本进行了扩展,讨论了一些对理解多处理器系统以及如何有效地对它们进行编程至关重要的底层问题。我们使用c++中的示例来说明这些问题。