How to kill go routine?

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
}

  

猜你喜欢

转载自www.cnblogs.com/yuanjiangw/p/12200269.html