首页 > 其他分享 >Go goroutine

Go goroutine

时间:2023-03-09 17:46:45浏览次数:28  
标签:lock goroutine 并行 并发 Go CPU

Go goroutine

并发和并行

并发

并发表示的是单核运行多个线程(通过CPU轮询实现的,比较损耗CPU,CPU切换的过程)

并行

并行表示的是多核上面运行多线程

goroutine

//协程是轻量级的线程
//共享的堆空间
//独立的栈空间
//在运行某个程序时,如何知道是否存在资源竞争问题。 方法很简单,在编译该程序时,增加一个参数 -race 即可

互斥锁

var lock sync.Mutex // 这里的这个就是申明一个Mutex的变量lock
lock.Lock()         // 这个表示锁上
...                 // 需要锁的操作
lock.Unlock()       // 这个表示的是解锁

channel

作用:用来进行不同协程之间的通信
channel的本质是一个队列FIFO

思考

主线程在等待所有 goroutine 全部完成的时间很难确定,我们应该怎么确定主线程完成的时间

标签:lock,goroutine,并行,并发,Go,CPU
From: https://www.cnblogs.com/sqmw/p/17199354.html

相关文章

  • Django之form组件
    Form介绍我们在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校......
  • golang调用opencv实现图像识别
    https://gocv.io/https://github.com/hybridgroup/gocvpackagemainimport( "fmt" "image" "image/color" "os" "strconv" "gocv.io/x/gocv")funcmain(){......
  • Go循环判断
    if条件判断ifage>18{}elseifage==18{}else{}for循环continue:直接执行下一次循环break:直接退出循环//写法1fori:=0;i<3;i++......
  • CNN小结:VGG & GoogleNet & ResNet & MobileNet..
    CNN小结:VGG&GoogleNet&ResNet&MobileNet..目录VGG核心想法网络结构QGoogLeNet核心想法网络结构InceptionModule辅助分类器GoogLeNet......
  • django中使用celery
    #当你如果只做定时任务,会有一个更为简单的框架-APSchedule:https://blog.csdn.net/qq_41341757/article/details/118759836#使用步骤:-1.把自己写的包,复制......
  • Go字符串方法
    字符串常用方法都在strings包中高性能字符串拼接varbuilderstrings.Builderbuilder.WriteString("用户名")builder.WriteByte(97)str:=builder.String()fmt.......
  • MongoDB的安装
    ......
  • celery 执行异步任务,延迟任务,定时任务、django中使用celery、轮播图接口加缓存、双写
    目录1celery执行异步任务,延迟任务,定时任务2django中使用celery2.1秒杀功能2.1.1视图2.1.2任务order_task.py2.1.3前端Sckill.vue2.2django中使用celery3轮播图......
  • Go assert
    Goassert断言应用场景由于接口是用于多态,计算机不知道具体的类型,所以就需要我们使用断言来转化成具体的类型使用断言的时候,如果类型不匹配就会包panic错误assertr......
  • django分页器
    分页器Django分页器Django自带分页器,但是不太好用,所以可以直接自定义一个分页器供项目使用。#1.在项目下建一个utils文件夹#2.建立一个py文件,MyPage.py(自己随......