并发和并行之间的区别是什么?
当前回答
并发简单意味着多个任务正在运行(不需要并行)。例如,假设我们在任何时刻都有3个任务:多个任务可能正在运行,或者所有任务可能同时运行。
并行性意味着它们实际上是并行运行的。因此,在这种情况下,三者必须同时运行。
其他回答
并发:如果一个处理器解决了两个或多个问题。
并行性:如果一个问题由多个处理器解决。
并发是编程术语。它是关于多个任务的,这些任务开始运行并以无特定顺序在重叠的时间段内完成。并发性由操作系统管理。当多个线程想要访问同一资源时,线程会遇到竞争条件问题。此外,它们还存在死锁,彼此等待,阻止自己运行。例如,你想一边吃饭一边说话。首先你需要吞下嘴里的食物或停止咀嚼,然后你可以说话(你在划水),说话后你可以再咬一口。
并行性是一个硬件术语。它是关于在具有多个计算资源(如多核处理器)的硬件上同时运行的多个任务。如果你能在咀嚼食物时说话,这将是平行的。平行的一个例子是,一个人可以同时唱歌和跳舞。
同意:具有共享资源潜力的多个执行流
前任:两个线程竞争I/O端口。
视差:将问题分成多个相似的块。
前任:通过对文件的每一半运行两个进程来解析大文件。
派克的“并发”概念是一个有意的设计和实现决策。具有并发能力的程序设计可能表现出行为上的“并行性”;这取决于运行时环境。
你不希望一个不是为并发而设计的程序表现出并行性。:-)但就相关因素(功耗、性能等)而言,这是一个净收益,您需要最大程度的并发设计,以便主机系统可以在可能的情况下并行执行。
派克的Go编程语言将这一点发挥到了极致:他的函数都是可以同时正确运行的线程,也就是说,如果系统有能力,调用函数总是会创建一个与调用者并行运行的线程。一个拥有数百甚至数千个线程的应用程序在他的世界中是非常普通的。(我不是围棋专家,这只是我的看法。)
这篇惊人的博客节选:
并发和并行之间的区别:并发是指两个任务可以在重叠的时间段。并行性是指任务在例如在多核处理器上。并发是独立执行进程的组成,而并行是同时执行(可能相关)计算。并发是指同时处理许多事情。相似一次做很多事情。应用程序可以是并发的,但不能是并行的,这意味着它同时处理多个任务,但没有两个任务在同一时刻执行。应用程序可以是并行的,但不能是并发的,这意味着它在多核CPU中同时处理一个任务的多个子任务时间应用程序既不能并行,也不能并发,这意味着它一次一个地、顺序地处理所有任务。应用程序既可以是并行的,也可以是并发的,这意味着它在多核CPU中同时处理多个任务时间