登录
首页 >  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 
<p>玩这个东西</p>
<h2 class="daan">
    正确答案
</h2>
<p>实现这一目标的方法很少,最简单和最方便的是使用另一个渠道,例如:</p>
<pre class="brush:go;toolbar:false">func main() {
    tooLate := make(chan struct{})
    proCh := make(chan string)

    go func() {
        for {
            fmt.Println("working")
            time.Sleep(1 * time.Second)
            select {
            case 
<p><a target='_blank'  href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXpusdyfr5Z5fZqwoZXamqqqrpLfZabFn5OqyHxwZH2QpYa40NaHl4ajtK2tfs6B3LKkkrqBZK92gqC0jYqbfaN-a77Qs7GDhp6as3uG3oaVsbOFmIVhu6yKnrSKdW0' rel='nofollow'><code>playground</code></a></p>
<p>您也可以考虑使用<a target='_blank'  href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXpusdyfppZkr83GoZTZmpaup4SZcqK8q2muypBtmnyyh3zHlZujfauEz62tf8-St7VthaqCnLGGgp-yo31jiaaGsbS3zW2DeYzfsmZ-3oWVuWqR4IqasYNtcQ' rel='nofollow'><code>sync.Cond</code></a></p><p>文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何向 goroutine 发出信号以停止运行?》文章吧,也可关注golang学习网公众号了解相关技术文章。</p>
声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>