Go并发编程概述
概述
简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务。
随着硬件的发展,并发程序变得越来越重要。Web服务器会一次处理成千上万的请求。平板电脑和手机app在渲染用户画面同时还会后台执行各种计算任务和网络请求。即使是传统的批处理问题–读取数据,计算,写输出–现在也会用并发来隐藏掉I/O的操作延迟以充分利用现代计算机设备的多个核心。计算机的性能每年都在以非线性的速度增长。
宏观的并发是指在一段时间内,有多个程序在同时运行。
并发在微观上,是指在同一时刻只能有一条指令执行,但多个程序指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个程序快速交替的执行。
并行和并发
并行(parallel):指在同一时刻,有多条指令在多个处理器
上同时执行。
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,通过CPU时间片轮转
使多个进程快速交替的执行。
大师曾以咖啡机的例子来解释并行和并发的区别。
l 并发是两个队列交替使用一台咖啡机 (假的多任务)
l 并行是两个队列同时使用两台咖啡机 (真正的多任务)