首页 > 编程语言 > 详细

Go进程,线程,协程

时间:2021-02-22 17:07:18      阅读:20      评论:0      收藏:0      [点我收藏+]
并发与并行的区别
  • 并发:同时处理许多个任务,实际把任务不同的时间点交给处理器处理,微观层面,任务不会同时处理;
  • 并行:每一个任务分配给每一个处理器独立完成,多个任务一定是同时运行;
  • 比如4个人同时使用4个水龙头打水,这种情况是并行,要求打水和水龙头数量相等.实际情况是需要打水的人数往往比水龙头的数量多,所以多数情况还是并发
进程和线程的区别
  • 进程:进程是活跃的程序,占用系统资源;在内存中执行。程序运行起来,产生一个进程,同一个程序加载不同的进程,比如同时运行两个QQ;
  • 进程和线程的区别:线程是轻量级进程,通常一个进程包含若干个线程。比如音乐进程,可以一边查看排行榜一边听音乐。互不影响;
协程
  • 协程是一种轻量级的线程,比线程更加轻量级的存在,比如一个进程拥有多个线程,一个线程拥有多个协程;
进程,线程,协程 不同点
  • 进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全
  • 线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
  • 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

Go进程,线程,协程

原文:https://www.cnblogs.com/tanbinghao/p/14430379.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!