goroutine并发编程

目录

一:并发和并行

二:go协程和go主线程

   三:代码实现

目录

一:并发和并行

二:go协程和go主线程

   三:代码实现

四:goroutine调度模型---MGP模型



一:并发和并行

首先我们需要分清并发和并行的区别,并发是多线程在一个CPU里运行,并行就是多线程在多个CPU里面运行 

二:go协程和go主线程

协程其实就是轻量级的线程,一个线程可以有多个协程,这个线程就是主线程

协程的特点:

1:有独立的栈空间

2:共享程序堆空间

3:调度由用户控制

4:协程是轻量级的线程

   三:代码实现

package main

import (
   "fmt"
   "strconv"
   "time"
)

func test() {
   for i := 1; i <= 10; i++ {
      fmt.Println("test hello,world " + strconv.Itoa(i))
      time.Sleep(time.Second)
   }
}
func main() {
   go test() //开启一个协程,main和test同时执行
   for i := 1; i <= 10; i++ {
      fmt.Println("main hello,world " + strconv.Itoa(i))
      time.Sleep(time.Second)
   }
}

四:goroutine调度模型---MGP模型

M: 操作系统的主线程

G:协程  

P :协程执行所需的上下文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值