如何停止 goroutine [重复]

2023-12-20

我有一个调用函数的 goroutine,并且有一个特殊参数,我想启动或停止这个 goroutine。我的问题是这段代码永远不会停止我的 goroutine,它每次都会创建一个新作业。

quit := make(chan bool)
run := make(chan bool)

    go func() {
        for {
            select {
            case <-quit:
                close(run)
            case <-run:
                myFunc(c)
            default:
            }
        }
    }()

    if x == true {
        quit <- true
    } else {
        run <- true
    }

我该如何停止我的例行公事?


当您关闭run渠道,case <-run将始终触发:监听关闭的通道立即返回零值。

如果你想停止 goroutine,你应该在获取到之后返回<-quit signal.

作为旁注,您的default:子句使 for 循环主动工作,您应该摆脱它(您仍然会在两个频道上收听)

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

如何停止 goroutine [重复] 的相关文章

随机推荐

  • 选择框更改事件中的 setTimeout

    当我在选择框中将 autopostback 设置为 true 时 为什么 onchange 事件中需要 setTimeout 为什么不直接调用 doPostBack onchange javascript setTimeout doPost
  • 清除git本地缓存

    我有一个 Webstorm 项目 我正要提交 但在按下 Git Windows GUI 中的提交按钮之前 我记得我不想提交我的项目 idea文件夹内容 所以我使用了自动生成的网站 gitignores对于某些 IDE 并将其添加到我的 gi
  • Postgres函数在两个表中插入多条记录

    create table public orders orderID serial PRIMARY KEY orderdate timestamp NOT NULL create table public orderdetails orde
  • 使用英特尔 ifort 编译器启用标准输出的缓冲 I/O

    我读过有关使用 ifort 启用缓冲 I O 的英特尔文档 使用 assume buffered io or FORT BUFFERED true 这适用于直接输出到文件 然而 我们有大型应用程序正在写入标准输出 例如write or wr
  • Haxe 中的常量

    如何在 Haxe 中创建公共常量 我只需要旧的模拟const in AS3 public class Hello public static const HEY String hey 在 Haxe 中声明常量的常用方法是使用static a
  • 如何在 Go 中执行文字 *int64 ?

    我有一个结构类型 int64 field type SomeType struct SomeField int64 在我的代码中的某个时刻 我想声明这个的文字 比如说 当我知道该值应该是 0 或指向 0 时 你知道我的意思 instance
  • Universal Analytics 和 Facebook 注册

    我有一个允许通过 Facebook 注册的网站 theneeds com 我们正在开展多项活动 例如在 Facebook 本身上 我们希望正确跟踪不同活动的注册情况 问题出在 Universal Analytics 上 当用户注册 Face
  • 更改 Git 历史记录中的电子邮件地址

    我已经在 git 存储库上工作了一段时间并做了一些提交 我一直在我的 php 文件中使用文档块 包括我的私人电子邮件地址 如下所示 Bla bla bla author Nic lt email protected cdn cgi l em
  • 退出世博会

    我必须从我的 React Native 项目中退出 但我仍然想保留他们的库提供的一些功能 例如通知 是否可以 提前致谢 从 开始SDK33博览会改为根据需要单独安装自己的模块 如果您已经安装并使用了notification模块使用expo
  • Flutter,in_app_purchase 非常难以测试

    在查看了有点差劲的 in app purchase pub dev 文档后 在多次分发测试版本后 我成功地将内部测试 url 发送到测试设备进行下载 然而 当我使用真实设备进入 in app purchase 屏幕时 就会出现应用程序终止对
  • 在通用 lambda 捕获中使用 this 指针

    我有一个问题 Clang 3 6 和 G 5 1 有不同的意见 include
  • Linux环境下的C#

    我目前在 Unix 环境中使用 C C 工作 并且是 Linux 环境的新手 我想了解 Linux 操作系统并学习 C 作为我职业生涯的下一个级别的编程语言 我决定在我的笔记本电脑上安装 Ubuntu Linux 但我不确定我们是否可以在L
  • 如何使用JS检测用户与phonegap的触摸

    我正在使用phonegap 来构建Android 应用程序 我想检测用户的触摸事件 以便弹出警报 但是 如何从 javascript 调用 ontouch 事件呢 Thanks 下面是一个示例 显示touchstart and touche
  • kaptGenerateStubsDebugKotlin FAILED e:无法加载模块 <错误模块> - Android Studio 项目

    当我尝试构建项目时出现此错误 我的编译器没有任何错误 源代码 https github com KarolCieslar WyjazdyOSP tree firebase https github com KarolCieslar Wyja
  • .NET 4.5 中 List.Sort 的行为与 .NET 4.0 相比有何变化?

    我在针对 NET 4 0 的项目中进行了以下测试 TestFixture public class Donkey Test public void TestListSorting var expected new MockRepositor
  • 使用 webpack 导入 vis.js

    我想进口only DataSet and Network from vis js在我们的 Webpack 应用程序中使用 ES6 模块 一种简单的方法就是导入dist vis network min js但它已经缩小了 所以与我们的 web
  • JavaScript解析字符串和对象的引用[重复]

    这个问题在这里已经有答案了 是否可以通过对象本身获取对象的引用 obj 以及字符串形式的属性 地址 城镇 街道 所以最后它解决了 obj 地址 城镇 街道 我可以想象 eval 函数 Try function getValue obj pa
  • Echo 将我的制表符更改为空格

    我将来自网络的以下结构作为如何在 BASH 中读取文件的基本示例 cat inputfile txt while read line do echo line done 不过 我的 inputfile txt 是制表符分隔的 并且上述命令中
  • 何时索引、在 Mongoid 中索引什么?

    我对索引有点陌生 但我对索引的用例很好奇 我认为它使对索引字段的查询速度更快 是否有确定索引内容和何时索引的标准 我应该期望获得什么样的性能优势 特别是在 Rails 应用程序上将 Mongoid 与 MongoDb 结合使用 查看Inde
  • 如何停止 goroutine [重复]

    这个问题在这里已经有答案了 我有一个调用函数的 goroutine 并且有一个特殊参数 我想启动或停止这个 goroutine 我的问题是这段代码永远不会停止我的 goroutine 它每次都会创建一个新作业 quit make chan