码迷,mamicode.com
首页 > 其他好文 > 详细

并发Goroute

时间:2018-02-03 18:57:56      阅读:409      评论:0      收藏:0      [点我收藏+]

标签:执行   就是   width   切换   image   height   实体   操作系统   str   

Goroutine(轻量级的线程,开线程没有数量限制)

1.进程和线程
  A.进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。
  B.线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
  C.一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。

2、进程和线程

  ngix是多进程的单线程程序

技术分享图片

 3.并发和并行
   A.多线程程序在一个核的cpu上运行,就是并发。go多线程的切换都是在用户态操作的,不像其他语言先切换到内核态,完成线程切换,然后返回用户态继续执行程序。
   B.多线程程序在多个核的cpu上运行,就是并行

技术分享图片

4.协程和线程
  协程:独立的栈空间,共享堆空间,调度由用户自己控制,本质上有点类似于用户级线程,这些用户级线程的调度也是自己实现的
  线程:一个线程上可以跑多个协程,协程是轻量量级的线程。一个线程可以跑多个Goroutine。

5.goroutine调度模型

 M是物理线程,P是资源,G是Goroutine

技术分享图片

 

如果有IO操作时,会新起一个线程等待IO操作的Goroutine

技术分享图片

 

6.如何设置golang运行的cpu核数

 

并发Goroute

标签:执行   就是   width   切换   image   height   实体   操作系统   str   

原文地址:https://www.cnblogs.com/domestique/p/8410313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!