gpt4 book ai didi

language-agnostic - 并发编程和并行编程有什么区别?

转载 作者:行者123 更新时间:2023-12-03 03:59:13 25 4
gpt4 key购买 nike

并发编程和并行编程有什么区别?我问谷歌,但没有找到任何可以帮助我理解这种差异的东西。你能给我一个关于两者的例子吗?

现在我找到了这个解释:http://www.linux-mag.com/id/7411 - 但是“并发是程序的属性”与“并行执行是机器的属性”对我来说还不够 - 我仍然不能说什么是什么。

最佳答案

并发编程关注看似重叠的操作,并且主要关注由于非确定性控制流而产生的复杂性。与并发程序相关的定量成本通常是吞吐量和延迟。并发程序通常受 IO 限制,但并非总是如此,例如并发垃圾收集器完全在 CPU 上。并发程序的教学示例是网络爬虫。该程序发起对网页的请求,并在下载结果可用时同时接受响应,累积一组已访问过的页面。控制流是不确定的,因为每次运行程序时不一定以相同的顺序接收响应。这一特性使得并发程序的调试变得非常困难。有些应用程序基本上是并发的,例如Web 服务器必须同时处理客户端连接。 Erlang、F# asynchronous workflows 和 Scala 的 Akka 库可能是最有前途的高度并发编程方法。

多核编程是并行编程的一种特殊情况。并行编程涉及为了提高吞吐量的特定目标而重叠的操作。通过使控制流具有确定性,可以避免并发编程的困难。通常,程序会生成并行运行的子任务集,并且父任务仅在每个子任务完成后才继续。这使得并行程序比并发程序更容易调试。并行编程的难点是粒度和通信等问题的性能优化。后者在多核环境中仍然是一个问题,因为将数据从一个缓存传输到另一个缓存会产生相当大的成本。密集矩阵-矩阵乘法是并行编程的教学示例,可以通过使用 Straasen 的分而治之算法并并行解决子问题来有效解决。 Cilk 也许是最有前途的多核高性能并行编程方法,它已被 Intel 的 Threaded Building Blocks 和 Microsoft 的 Task Parallel Library(在 .NET 4 中)采用。

关于language-agnostic - 并发编程和并行编程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com