《零基础Go语言算法实战》【题目 2-25】goroutine 的执行权问题

server/2025/1/17 19:09:04/

《零基础Go语言算法实战》

【题目 2-25】goroutine 的执行权问题

请说明以下这段代码为什么会卡死。

package main

import (

 "fmt"

 "runtime"

)

func main() {

 var i byte

 go func() {

 for i = 0; i <= 255; i++ {

 }

 }()

 fmt.Println("start")

 // 让出执行以强制执行其他 goroutine

 runtime.Gosched()

 runtime.GC()

 fmt.Println("end")

}

【解答】

Go 语言中,byte 是 uint8 的别名。所以上面的 for 循环会始终成立,因为 i++ 执行到

i=255 时会溢出,所以 i <= 255 一定成立。也就是说,for 循环永远无法退出,所以上面的代

码其实可以等价于如下代码:

go func() {

 for {}

}

正在被执行的 goroutine 发生如 IO 操作、chanrel 阻塞、system call、运行较长时间等情况时,

让出当前 goroutine 的执行权,并调度后面的 goroutine 执行。

d86541ad958c4d02ad2666cbc5e9a3c3.png

 

 


http://www.ppmy.cn/server/159163.html

相关文章

《leetcode-runner》如何手搓一个debug调试器——引言

文章目录 背景 仓库地址&#xff1a;leetcode-runner 背景 最近笔者写了个idea插件——leetcode-runner。该插件可以让扣友在本地刷leetcode&#xff0c;并且leetcode提供的和代码相关的编辑功能该插件都提供&#xff0c;具体演示如下 唯一不足的就是代码debug。众所周知&…

OpenCV相机标定与3D重建(59)用于立体相机标定的函数stereoCalibrate()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 标定立体相机设置。此函数找到两个相机各自的内参以及两个相机之间的外参。 cv::stereoCalibrate 是 OpenCV 中用于立体相机标定的函数。它通过一…

Python----Python爬虫(Scrapy的应用:CrawlSpider 使用,爬取小说,CrawlSpider版)

一、CrawlSpider 使用 1.1、CrawlSpider CrawSpiders 是 Scrapy 框架中的一个特殊爬虫类&#xff0c;它用于处理需要跟随链接并抓取多个页面的情况。相比于基本的 Spider 类&#xff0c;CrawSpiders 提供了一个更灵活、更强大的方式来定义爬取规则。 在Scrapy中Spider是所有爬…

[Effective C++]条款47 萃取器

本文初发于 “天目中云的小站”&#xff0c;同步转载于此。 条款47 : 请使用traits classes表现类型信息 traits classes(萃取器类), 如你所见萃取器其实是一个模板类, 在C中萃取器是一个神奇且有趣的存在, 它被广泛引用于标准库STL的编写中, 我们将在本条款中了解萃取器的功能…

设计模式-工厂模式/抽象工厂模式

工厂模式 定义 定义一个创建对象的接口&#xff0c;让子类决定实列化哪一个类&#xff0c;工厂模式使一个类的实例化延迟到其子类&#xff1b; 工厂方法模式是简单工厂模式的延伸。在工厂方法模式中&#xff0c;核心工厂类不在负责产品的创建&#xff0c;而是将具体的创建工作…

深入理解JavaScript闭包:原理、实践和优化

引言 在JavaScript中&#xff0c;闭包是一个非常重要的概念。它允许函数访问其外部作用域中的变量&#xff0c;即使这些变量在其定义的作用域之外。闭包的出现使得JavaScript能够实现许多高级功能&#xff0c;如模块封装、事件处理、异步编程等。然而&#xff0c;闭包的使用也…

长安“战疫”网络安全公益赛的一些随想

起因 今年刚进入大学&#xff0c;开始带校队&#xff0c;为了培养校队新成员&#xff0c;也就一直计划着和当地的一些高校合作交流&#xff0c;但是由于种种原因一直被搁置下来。正巧学校信息中心和四叶草有一个培训项目的合作&#xff0c;学校的网安协会也算是沾了光成为了培…

浏览器安全(同源策略及浏览器沙箱)

一、同源策略&#xff08;Same Origin Policy&#xff09; 1.定义 同源策略&#xff08;Same - origin Policy&#xff09;是一种浏览器的安全机制。它规定一个网页的脚本只能访问和操作与它同源的资源。这里的 “源” 包括协议&#xff08;如 http、https&#xff09;、域名&…