惊风破浪的博客
PHP
MySQL
Redis
Linux
算法与设计模式
杂项
Golang
登录
Go进程,线程,协程
1个月前 ⋅
0
###### `并发与并行的区别` - 并发:同时处理许多个任务,实际把任务不同的时间点交给处理器处理,微观层面,任务不会同时处理; - 并行:每一个任务分配给每一个处理器独立完成,多个任务一定是同时运行; - `比如4个人同时使用4个水龙头打水,这种情况是并行,要求打水和水龙头数量相等.实际情况是需要打水的人数往往比水龙头的数量多,所以多数情况还是并发` ###### `进程和线程的区别` - 进程:进程是活跃的程序,占用系统资源;在内存中执行。程序运行起来,产生一个进程,同一个程序加载不同的进程,比如同时运行两个QQ; - 进程和线程的区别:线程是轻量级进程,通常一个进程包含若干个线程。比如音乐进程,可以一边查看排行榜一边听音乐。互不影响; ###### `协程` - 协程是一种轻量级的线程,比线程更加轻量级的存在,比如一个进程拥有多个线程,一个线程拥有多个协程; ###### `进程,线程,协程 不同点` - 进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全 - 线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。 - 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
回复
发布文章
友情链接
Mr.Zhu
Swoole
PHP官网
菜鸟教程
Go语言中文网
implode
数据结构与算法