gpt4 book ai didi

go - 打断休眠的 goroutine?

转载 作者:IT王子 更新时间:2023-10-29 01:15:53 25 4
gpt4 key购买 nike

有什么方法可以让我执行,例如

time.Sleep(time.Second * 5000) //basically a long period of time

然后在我希望的时候“唤醒”休眠的 goroutine?

我看到 Sleep.go 中有一个 Reset(d Duration),但我无法调用它。有什么想法吗?

最佳答案

没有办法中断time.Sleep,但是,您可以使用time.After。 , 和一个 select 语句来获得你想要的功能。

展示基本思想的简单示例:

package main

import (
"fmt"
"time"
)

func main() {
timeoutchan := make(chan bool)

go func() {
<-time.After(2 * time.Second)
timeoutchan <- true
}()

select {
case <-timeoutchan:
break
case <-time.After(10 * time.Second):
break
}

fmt.Println("Hello, playground")
}

http://play.golang.org/p/7uKfItZbKG

在这个例子中,我们生成一个信号 goroutine 来告诉 main 停止暂停。主要是在两个 channel 上等待和监听,timeoutchan(我们的信号)和 time.After 返回的 channel 。当它在这些 channel 中的任何一个上接收时,它将跳出选择并继续执行。

关于go - 打断休眠的 goroutine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com