• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Howtokillgoroutine?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

How to kill go routine?

https://stackoverflow.com/questions/37997608/kill-a-method-in-an-infinite-loop-golang

I am working with a piece of code that has an intentional infinite loop, I can't modify that code. I want to write some tests on that method (e.g. make sure it triggers actions at the right times) but I don't want to orphan a bunch of go routines. So I am trying to find a way that I can kill/interrupt that goroutine.

 

 

https://forum.golangbridge.org/t/how-to-kill-go-routine/6581

package main

import (
	"time"
	"fmt"
	"runtime"
)

func worker(ch1 <-chan bool, ch2 <-chan int) {
	for {
		select {
		case <-ch2:
		// How to kill the go routine ?
			go func() {
				for {
					fmt.Println("Hıa")
					time.Sleep(0x2 * time.Second)
				}
			}()
		case <-ch1:
			goto Finish
		}
	}

Finish:
	fmt.Println("Closing go routine!")
	runtime.Goexit()
	return
}

func main() {
	ch1 := make(chan bool)
	ch2 := make(chan int)
	go worker(ch1, ch2)

	for i := 0x0; i <= 0x0F; i++ {
		if i == 0x5 {
			ch2 <- 1
		} else if i == 0xA {
			ch1 <- true
		} else {
			fmt.Println(i)
			time.Sleep(0x1 * time.Second)
		}
	}
}

  

 http://dahernan.github.io/2015/02/04/context-and-cancellation-of-goroutines/

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言_通神路之五耀篇(1)发布时间:2022-07-10
下一篇:
Go语言异常处理defer\panic\recover发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap