当前位置: 首页 > 网络应用技术

Go学习笔记的goroutines

时间:2023-03-06 21:44:11 网络应用技术

  在GO语言中,每个并发执行单元称为Goroutine,这是GO -Coroutine中的轻量级线程。

  当程序启动时,其主要函数将在单独的goroutine中运行,我们称其为主goroutine。新的goroutine将使用go语句创建新的goroutine。在grammar的术语中,go语句是一个普通的函数或方法调用来添加关键字在调用之前。GO语句将在其语句中在新创建的Goroutine中运行该功能。GO语句本身将快速完成。

  2.1什么是并发?设备:一段时间内执行两个或多个任务。

  我们不在乎这些任务是否同时执行。我们只知道这些任务可以在此期间执行。当然,这个时期可能长或短。

  2.2最小并发单位是什么?该过程是计算机资源的最小单元。它是CPU资源分配的基本单位。它具有独立的内存。

  该线程是具有最小计算机调度的单元,也是程序的最小单元。在此过程中,一个过程通常具有一个到多个线程。

  2.3如何实施计算机?计算机的时间呼叫是并发的基础。CPU可以通过快速切换操作来执行不同的操作。执行后,可以阻止基本调度单元。此时,您可以使用CPU资源,并且操作系统可以保证整个计划过程。

  GO的调度程序中有三个重要结构:M,P,S

  一个m将与两件事相关联,一件事是内核线程,另一个是可执行过程。

  一个上下文P将有两种类型的goroutine,一种正在运行,图中的蓝色G;另一个是排队的,图中的灰色G将存储在该过程的运行中。

  上下文P的数量也代表了运行的Goroutinue的数量。通常,将其设置为少数,并且机器将同时运行。当然,可以设置P的P数。环境变量gomaxprocs的值,或在运行时调用函数runtime.gomaxprocs(),最大值为256。

  如果Goroutine处于等待状态,则在调用运行时·Ready功能后,它将被唤醒。觉醒的goroutine将被重新投入。在与M上下文相对应的运行中,请等待调度。

  -结尾-

  作者:建筑的改进之路,风与雨道的十年研究和开发,大型工厂建筑师,CSDN博客专家,专注于建筑技术降水学习和共享,职业和认知升级,坚持共享地面 - 到 -地面干货物品,期待与您的体验