登录
首页 >  Golang >  Go问答

如何向 goroutine 发出信号以停止运行?

来源:Golang技术栈

时间:2023-04-15 20:48:50 403浏览 收藏

本篇文章给大家分享《如何向 goroutine 发出信号以停止运行?》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我正在尝试停止执行例行程序,但找不到实现此目标的方法。我正在考虑使用第二个频道,但如果我从中读取它会阻止它不是吗?这是一些代码,我希望能解释我正在尝试做的事情。

package main

import "fmt"
import "time"

func main() {

    var tooLate bool

    proCh := make(chan string)

    go func() {
        for {
               fmt.Println("working")
        //if is tooLate we stop/return it
            if tooLate { 
            fmt.Println("stopped")
                return
            }
       //processing some data and send the result on proCh
            time.Sleep(2 * time.Second)
            proCh 

玩这个东西

正确答案

实现这一目标的方法很少,最简单和最方便的是使用另一个渠道,例如:

func main() {
    tooLate := make(chan struct{})
    proCh := make(chan string)

    go func() {
        for {
            fmt.Println("working")
            time.Sleep(1 * time.Second)
            select {
            case 

playground

您也可以考虑使用sync.Cond

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何向 goroutine 发出信号以停止运行?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>