Go进程,线程,协程

并发与并行的区别
  • 并发:同时处理许多个任务,实际把任务不同的时间点交给处理器处理,微观层面,任务不会同时处理;
  • 并行:每一个任务分配给每一个处理器独立完成,多个任务一定是同时运行;
  • 比如4个人同时使用4个水龙头打水,这种情况是并行,要求打水和水龙头数量相等.实际情况是需要打水的人数往往比水龙头的数量多,所以多数情况还是并发
进程和线程的区别
  • 进程:进程是活跃的程序,占用系统资源;在内存中执行。程序运行起来,产生一个进程,同一个程序加载不同的进程,比如同时运行两个QQ;
  • 进程和线程的区别:线程是轻量级进程,通常一个进程包含若干个线程。比如音乐进程,可以一边查看排行榜一边听音乐。互不影响;
协程
  • 协程是一种轻量级的线程,比线程更加轻量级的存在,比如一个进程拥有多个线程,一个线程拥有多个协程;
进程,线程,协程 不同点
  • 进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全

  • 线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。

  • 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

  • 关于进程通信:管道通信,有名管道,无名管道,消息队列通信,套接字通信,共享内存等等;

僵尸进程:僵尸进程是当子进程比父进程先结束,而父进程有没有回收子进程,释放子进程占用的资源,此时子进程是一个僵尸进程;
孤儿进程:孤儿进程指的是父进程执行完成或被终止后依然需要的一类进程,这些孤儿进程将被init进程收养。
守护进程:是一类运行在后台的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行到系统关闭。完成任务自动关闭;

posted @ 2021-02-22 15:02  惊风破浪的博客  阅读(508)  评论(0编辑  收藏  举报