Golang-goroutine/channel

goroutine-基本介绍

进程和线程介绍

    

程序、进程和线程的关系示意图

    

并发和并行

  1)多线程程序在单核上运行,就是并发
  2)多线程程序在多核上运行,就是并行
  3)示意图:

     

    小结:

扫描二维码关注公众号,回复: 10930870 查看本文章

    

Go 协程和Go 主线程

    Go 主线程(有程序员直接称为线程/也可以理解成进程): 一个 Go 线程上,可以起多个协程,你可以这样理解,协程是轻量级的线程[编译器做优化]。

Go 协程的特点
    1)有独立的栈空间
    2)共享程序堆空间
    3)调度由用户控制
    4)协程是轻量级的线程

    示意图

      

   

goroutine-快速入门
   案例说明
    请编写一个程序,完成如下功能:
    1)在主线程(可以理解成进程)中,开启一个 goroutine, 该协程每隔 1 秒输出 "hello,world"
    2)在主线程中也每隔一秒输出"hello,golang", 输出 10 次后,退出程序
    3)要求主线程和 goroutine 同时执行.
    4)画出主线程和协程执行流程图

    

     输出的效果说明, main 这个主线程和 test 协程同时执行.

    

主线程和协程执行流程图

  

快速入门小结
  1)主线程是一个物理线程,直接作用在 cpu 上的。是重量级的,非常耗费 cpu 资源。
  2)协程从主线程开启的,是轻量级的线程,是逻辑态。对资源消耗相对小。
  3)Golang 的协程机制是重要的特点,可以轻松的开启上万个协程。其它编程语言的并发机制是一般基于线程的,开启过多的线程,资源耗费大,这里就突显 Golang 在并发上的优势了


goroutine 的调度模型
  MPG 模式基本介绍

  

   MPG 模式运行的状态 1

  

   MPG 模式运行的状态 2

  

猜你喜欢

转载自www.cnblogs.com/Essaycode/p/12729240.html