在同一个 goroutine 中创建的 goroutine 总是按顺序执行吗?

2023-12-14

package main

func main() {
        c:=make(chan int)
        for i:=0; i<=100;i++ {
                i:=i
                go func() {
                        c<-i
                }() 
        }   
        for {
                b:=<-c
                println(b)
                if b==100 {
                        break
                }   
        }   
}

上面的代码创建了 100 个 goroutine 来将 num 插入通道 c,所以我只是想知道,这些 goroutine 会以随机顺序执行吗?在我的测试过程中,输出始终为 1 到 100


不,不能保证它们按顺序运行。和GOMAXPROCS=1(默认)它们看起来是这样,但是语言规范并不能保证这一点。

当我运行你的程序时GOMAXPROCS=6,输出是不确定的:

$ GOMAXPROCS=6 ./test
2
0
1
4
3
5
6
7
8
9
...

在另一次运行中,输出略有不同。

如果您希望通道上的一组发送按顺序发生,最好的解决方案是从同一个 goroutine 执行它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一个 goroutine 中创建的 goroutine 总是按顺序执行吗? 的相关文章

随机推荐

  • CSVReader - 使用“作为转义字符时出现错误

    我正在使用 OpenCSV 我有一个CSVReader尝试解析 CSV 文件 该文件有引号字符 和分隔符 和转义字符也 请注意 CSV 包含以下单元格 ballet 24 classes 实际上代表这些值 ballet 24 classes
  • Java:使用 Fibonacci 堆实现 Dijkstra 算法

    新来的 但已经作为客人潜伏了一段时间了 好的 所以我一直在尝试使用 Fibonacci 堆 在 Java 中 执行 Dijkstra 的最短路径算法 经过一番搜索 我偶然发现了两个代表斐波那契堆的现成实现 第一个实现做得相当漂亮 可以找到h
  • Django 单元测试;使用 python-social-auth 登录

    我想为我正在使用的 Django 应用程序编写单元测试python 社交 身份验证 运行 Django 并使用浏览器时一切都很好 感谢 python social auth 但是 我似乎无法编写单元测试 因为我无法创建经过身份验证的客户端来
  • 为什么#include 之后仍然需要使用 std::string ? [复制]

    这个问题在这里已经有答案了 为了使用字符串 我需要包含字符串标头 以便其实现可用 但如果是这样 为什么我还需要添加这一行using std string 为什么它还不知道字符串数据类型 include
  • git clone 的 Python 进度条

    我使用 GitPython 在我的程序中克隆一个存储库 我想出了如何使用 clone from 命令显示克隆的状态 但我希望状态看起来更像 tqdm 进度条 我尝试使用 requests 库来获取文件的大小 但我仍然不确定如何实现它 尝试做
  • Nodemailer和Godaddy,我已经尝试了所有解决方案都无济于事

    我通过 GoDaddy 购买了一个域名和一个电子邮件地址 并捆绑了 Office 365 Basic 几天来 我尝试从我的节点应用程序中使用 nodemailer 发送一封电子邮件 但从未成功 因为我总是收到535 Authenticati
  • 使用 twinx 时旋转 xtick 标签时出现问题

    我的 X 轴旋转有问题 我尝试旋转输出图而没有错误 但我没有结果 Import Data df pd read csv https github com selva86 datasets raw master economics csv x
  • 使用 angularJS 时未捕获的错误:[$injector:modulerr]

    我在我的应用程序中使用 angularJS 但是当我添加路由配置部分时 我收到此错误 Uncaught Error injector modulerr http errors angularjs org 1 2 9 injector mod
  • 如何限制用户使用datetimepicker输入数据并禁用手动用户输入?

    我想限制用户只能使用日期时间选择器输入数据 下面是我正在使用的代码 div class form group div
  • 查看函数列表时出现呼叫提示/文档字符串?

    我最近刚刚转用 Komodo 进行 Python 编程 到目前为止我很喜欢它 我喜欢输入函数名称 然后输入开括号 它会打开调用提示 文档字符串 我也喜欢输入模块名称 然后输入 它会打开可用函数的列表 我的问题是 当我列出函数列表时 是否可以
  • 使用批处理文件复制目录路径中带有通配符的文件?

    我想要一个批处理文件将文件从每月更改的文件夹复制到另一个文件夹 但 Windows 命令提示符似乎不喜欢通配符 Example 我想复制文件夹media1并包含此目录中的文件 K Eng NAVDB Navigation Databases
  • 使用 Git 进行代码升级

    我试图弄清楚如何将 git 用于多个环境 开发 gt 测试 gt 产品 并进行代码升级 我读了一些有关分支的内容 但不太明白这如何解决我的问题 因为我必须有能力同时且彼此独立地运行所有环境 将非常感谢某种操作方法 这种三层工作流程似乎是很常
  • join 命令遗漏了一行数字

    我有两个文件 我想取出第三列中具有共同数据的行 但它遗漏了一行应该匹配的行 File1 b b b 4 5 3 c c c File2 1 2 3 4 a b c d e f g h i j k l l m n o 输出是 c c c a
  • Silverlight 图表 - 饼图显示图表上的依赖值

    我想在饼图本身上显示相关值 不在图例区域中 我正在使用 Silverlight 4 Silverlight 4 Toolkit 2010 年 4 月 这应该是一个很常见的请求 但我还没有找到解决方案 我该怎么做
  • Angular 4 中的 HashLocationStrategy 和查询参数

    我正在将现有的 Angular 4 应用程序从 PathLocationStrategy 迁移到HashLocationStrategy并且需要保持入口点 url 正常工作 它看起来像www test com param1 123 问题是
  • 我可以只用 CSS 创建这个形状吗?

    我正在为具有特定形状的网页构建一个英雄部分 目前我只是使用图像作为实际部分背景的叠加层 但我希望减少我发出的请求数量 并且会想知道是否可以使用 CSS 完成以下形状 所以黑色部分是实际图像所在的位置 而白色部分是我尝试使用 CSS 构建的部
  • C# 用阴影给图像着色

    我目前正在使用 C 创建一款游戏 并尝试为玩家创建服装 我想做布料设计并让玩家选择颜色 我从 TibiaME tibiame com 的游戏文件中拍摄了照片 它几乎满足了我的要求 我怎样才能用颜色填写这个表格 当我尝试替换某种颜色时 它不起
  • 无法将字符串分配给 Swift 函数内的数组元素

    下面代码中的两个赋值行都给出了这个错误 value T5 与 String 不同 func PrintShoppingList myList Array
  • SQL Server,检查 varchar 是否包含全零

    我需要编写一个函数来检查 varchar 变量值是否全为零 由于变量是 varchar 而不是 int 我有点迷失了 你会怎么办 多谢 您可以使用双重否定LIKE test variable NOT LIKE 0 这表示变量isn t由一定
  • 在同一个 goroutine 中创建的 goroutine 总是按顺序执行吗?

    package main func main c make chan int for i 0 i lt 100 i i i go func c lt i for b lt c println b if b 100 break 上面