[Go]并发goroutine

系列文章目录



一、进程、程序、线程、协程、go程

程序:代码编译过后产生的二进制可执行文件,程序是存储于磁盘中,不会变化。
进程:进程占用的是系统资源(内存),活的,最小的分配资源的单位。进程并发:一个程序启动后,有多个进程一起被启动。程序与进程的关系可以是1:1,也可以是1:N(进程并发)。借助MMU虚拟地址映射单元,虚拟出一块内存。
线程:LWP轻量级的进程,最小的执行单位。cpu分配时间片的依据。
协程:轻量级的线程,提高程序执行效率,在线程阻塞的时候,利用cpu去做其他事。

二、进程状态

进程的状态:初始态、就绪态、运行态、挂起(阻塞)态、终止(停止)
在这里插入图片描述

三、线程同步

(1)线程同步:为了不让公用的数据产生混乱,解决与时间有关的错误。不管是线程还是进程间都需要有同步机制。
(2)线程同步指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其他线程为保证数据一致性,不能调用该功能。
(3)什么时候需要同步?
多个控制流,共同操作一个共享资源的情况就需要做同步处理。在Go中我们可以借助channel来实现同步。

二、goroutine

1.goroutine特性

(1)goroutine的定义:Go在语言级别中支持协程,叫做goroutine。使用关键字go来使用,放置于函数调用的前面,产生一个go程。Go语言中的并发程序主要使用两种手段来实现:goroutine和channel。
(2)goroutine的特性:主go程结束导致进程退出,进程退出释放函数内存空间,导致子go程随之退出。

2.runtime包

(1)Gosched

出让当前go程所占用的cpu时间片。当再次获得cpu时,从出让位置继续回复执行.——时间片轮转调度算法。

(2)Goexit

return:返回当前函数调用到调用者那里去。return之前的 defer注册生效。
GoexitO:结束调用该函数的当前go程。Goexit(:之前注册的 defer都生效。

(3)GOMAXPROCS

设置当前进程使用的最大cpu核数。返回上一次调用成功的设置值。首次调用返回默认值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值