golang 只读chan 测试

package main

import (
	"fmt"
	"time"
)

func myGoroutine(stopCh <-chan struct{}) {
	// 在协程中监听停止信号
	for {
		select {
		case <-stopCh:
			// 接收到停止信号,执行清理操作并退出
			fmt.Println("cleanup")
			return
		default:
			// 继续正常的协程逻辑
			fmt.Println("doWork")
		}
	}
}

func main() {
	// 创建一个用于发送停止信号的通道
	stopCh := make(chan struct{})

	// 启动协程,并传入停止信号通道
	go myGoroutine(stopCh)

	// 在需要停止协程的时候,向通道发送停止信号
	time.Sleep(time.Second)
	stopCh <- struct{}{}

	// 等待协程退出
	time.Sleep(time.Second)
}
posted @ 2023-05-19 17:07  securitybob  阅读(26)  评论(0编辑  收藏  举报