并发并发简述goroutine调度select多路复用01
目录channel通信机制03
sync并发控制05
01并发简述•进程,线程与协程•并发与并行•并发模型1并发简述线程进程协程进程是系统进行资源分配和调度的最小单位,由内核进行调度,拥有独立的内存单元
一个进程中的多个线程之间可以并发执行
线程是CPU调度的最小单位,比进程更小的能独立运行的基本单位,线程分为内核态线程和用户态线程,一个线程上可以运行多个协程
协程是轻量级的线程,独立的栈空间,共享堆空间,调度由用户自己控制
协程无法强制的切换CPU控制权,通常只能进行协作式调度
1并发简述ABC并发是多线程程序在单核心的cpu上运行,一个时间段内存在多个线程或进程执行,但任何时间点上都只有一个线程或进程执行,多个线程或进程争抢时间片轮流执行,单核处理器只能并发
并发1并发简述ABC并行是多线程程序在多核心的cpu上运行,一个时间段和时间点存在多个线程或进程执行,利用多核实现多线程的运行,并行需要多核处理器
并行1并发简述并发模型多进程编程多进程是在操作系统层面进行并发的基本模式,所有的进程由内核管理,相互之间不会影响,但系统开销较大
多协程编程用户态线程,不需要操作系统来进行抢占式调度,且在真正的实现中寄存于线程中,系统开销极小
多线程编程大部分操作系统上都属于系统层面的并发模式,比多进程的开销小很多,但是其开销依旧比较大,且在高并发模式下,效率会有影响
非阻塞/异步IO编程比多线程要复杂,通过事件驱动的方式使用异步IO,尽可能地少用线程,降低开销
02goroutine调度•goroutine定义•普通函数创建goroutine•匿名函数创建goroutine任何函数加上go就能发送调度器运行;不需要定义时区分是否异步函数;调度器在合适的点进行切换;使用-race检测数据访问冲突;2goro