并发和并行之间的区别是什么?
当前回答
通过查阅字典,你可以看到并发(来自拉丁语)意味着一起运行、聚合、同意;因此,需要同步,因为在相同的资源上存在竞争。平行(来自希腊语)的意思是在侧面复制;从而在同一时间做同样的事情。
其他回答
并发与并行
Rob Pike在《并发不是并行性》中
并发是指同时处理许多事情。
并行是指同时做很多事情。
[并发理论]
并发-一次处理多个任务并行性-一次处理多个线程
我对并发性和并行性的看法
[同步与异步][Swift并发]
简单示例:
并发是:“两个队列访问一台ATM机”
并行是:“两个队列和两台ATM机”
并行编程执行有两种类型:非并行并行编程和并行并行编程(也称为并行)。
关键的区别在于,在人类看来,非并行并发中的线程似乎同时运行,但实际上它们并不运行。在非并行并发中,线程通过时间切片快速切换并轮流使用处理器。虽然并行有多个处理器可用,但多个线程可以同时在不同的处理器上运行。
参考文献:编程语言中的并发简介
同意:具有共享资源潜力的多个执行流
前任:两个线程竞争I/O端口。
视差:将问题分成多个相似的块。
前任:通过对文件的每一半运行两个进程来解析大文件。
“并发”是指有多件事情正在进行。
“并行性”是指并发的事情同时进行。
没有并行性的并发示例:
单个内核上有多个线程。Win32消息队列中有多条消息。MARS连接上有多个SqlDataReader。浏览器选项卡中有多个JavaScript承诺。
然而,请注意,并发性和并行性之间的区别通常是一个视角问题。从执行代码(可观察到的效果)的角度来看,上述示例是非并行的。但即使在单个内核中也存在指令级并行性。有一些硬件与CPU并行工作,然后在完成时中断CPU。在执行窗口过程或事件处理程序时,GPU可能正在绘制到屏幕。当您仍然获取上一个查询的结果时,DBMS可能正在为下一个查询遍历B树。执行Promise.resolve()时,浏览器可能正在进行布局或联网。等等。。。
好了。世界一如既往地混乱;)