并发和并行之间的区别是什么?
当前回答
并发可以涉及同时运行或不同时运行的任务(它们确实可以在单独的处理器/内核中运行,但也可以在“滴答声”中运行)。重要的是,并发总是指完成一项更大任务的一部分。所以基本上这是一些计算的一部分。你必须聪明地知道你可以同时做什么,不可以做什么,以及如何同步。
并行性意味着你只是同时做一些事情。他们不需要参与解决一个问题。例如,您的线程可以分别解决一个问题。当然,同步的东西也适用,但从不同的角度来看。
其他回答
同意:具有共享资源潜力的多个执行流
前任:两个线程竞争I/O端口。
视差:将问题分成多个相似的块。
前任:通过对文件的每一半运行两个进程来解析大文件。
并发是指两个或多个任务可以在重叠的时间段内启动、运行和完成。这并不一定意味着它们会同时运行。例如,在单核机器上进行多任务处理。
并行性是指任务实际上同时运行,例如在多核处理器上。
引用Sun的多线程编程指南:
并发:至少有两个线程正在进行时存在的条件。一种更为普遍的并行形式,可以将时间切片作为虚拟并行的一种形式。并行性:当至少两个线程同时执行时出现的情况。
简单示例:
并发是:“两个队列访问一台ATM机”
并行是:“两个队列和两台ATM机”
平行度:让多个线程执行类似的任务,这些任务在数据和资源方面彼此独立。例如:谷歌爬虫可以产生数千个线程,每个线程可以独立完成任务。
并发性:当您在线程之间共享数据和共享资源时,并发性就会显现出来。在事务系统中,这意味着您必须使用一些技术(如锁、信号量等)同步代码的关键部分。
并行性是每个CPU或多个CPU(在单个主板上)在多个内核上同时执行进程。
并发是指通过使用划分CPU时间(时间片)的调度算法在单个内核/CPU上实现并行性。进程是交错的。
单位:单个CPU中有1个或多个内核(几乎所有现代处理器)主板上有1个或多个CPU(想想老式服务器)一个应用程序就是一个程序(想想Chrome浏览器)一个程序可以有一个或多个进程(认为每个Chrome浏览器选项卡都是一个进程)一个进程可以有一个程序中的一个或多个线程(Chrome选项卡在一个线程中播放Youtube视频,另一个线程生成评论部分,另一个用于用户登录信息)因此,一个程序可以有一个或多个执行线程1个进程是线程+OS分配的内存资源(堆、寄存器、堆栈、类内存)