并行(parallel)和并发(concurrency)

并行(parallel)和并发(concurrency)是两个不同的概念。
并行是指多个任务同时都在执行,一般通过多线程、多进程或多台计算机实现。
并发是指至少两个任务都在推进,不一定是并行的,也可以是时间片切分的方式串行。

Windows 3.x时的协作式多任务(cooperative multitasking),是基于并发的多任务,一个进程交出执行权后下一个进程才能继续执行。Windows NT 3.1开始微软支持了抢占式多任务(preemptive multitasking),这个是通过CPU支持的时间片切分,给程序提供了虚拟的并行线程。而在多处理器系统或者多核系统上,才是真正的多线程同时并行。

类似的,异步(async)未必一定是并行的,但一定是并发的。比如jQuery、NodeJS都是Javascript的异步编程框架,但Javascript是单线程的(Web-worker除外),这个异步是基于并发的,而不是并行。C# 5的异步编程语法await,对UI线程而言,是利用UI线程消息循环实现的并发异步,而对背景线程而言,是利用线程池的并行异步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值