一.goroutine基本介绍
1.进程和线程说明介绍
1)进行就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位(比如迅雷进程)
2)线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的能独立运行的基本单位(比如迅雷中有好几个任务正在下载)
3)一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行。(并发是时间片很短,来回切换,同一时间只有一个在进行,而不是并行)
4)一个程序至少有一个进程,一个进程至少有一个线程。(比如同时打开一个程序的多个客户端就是起了多个进程)
2.并发和并行
go语言可以把并发转成并行
1)多线程程序在单核上运行,就是并发。多个任务作用在一个cpu上。从微观角度来看,在一个时间点,只有一个任务在执行,多个任务切换进行。
2)多线程程序在多核上运行,就是并行。多个任务作用在多个cpu上。从微观的角度来看,在同一时间点,有多个任务在同事执行。并行速度比并发快。
3.Go协程和Go主线程。(goroutine go中可以跑上w个协程)
1)Go线程(有程序员直接称为线程/可以理解为进程):一个线程上,可以起多个协程。协程是轻量级的线程【编译器做了优化】
2)Go协程的特点
有独立的栈空间、共享程序堆空间、调度由用户控制、协程是轻量级的线程
标签:协程,多个,goroutine,golang,并发,线程,进程 From: https://www.cnblogs.com/xiaoxiaomuyuyu/p/17223525.html