Go 中一些常见并发流程的快速参考表
在 t 运行 fn,返回一个布尔通道,在 fn 返回后会接收消息。下面的示例在一分钟内打印"Hello World",并将其运行中的 goroutine 阻塞直到 fn 完成。
done := coop.At(time.Now().Add(time.Minute), func() {
fmt.Println("Hello world")
})
<-done // 等待 fn 完成在提供的持续时间内每隔 t 执行 fn 一次,返回一个布尔通道,在 fn 返回后该通道将接收消息。下面的示例每分钟打印"Hello world",直到明天,并将其运行中的 goroutine 封锁,直到任务完成。
done := coop.Until(time.Now().Add(24*time.Hour), time.Minute, func() {
fmt.Println("Hello world")
})
<- 已完成在 duration 之后运行 fn,返回一个布尔通道,该通道在 fn 返回之后会接收消息。下面的示例在一秒钟之后打印"Hello world",并阻塞直到 fn 完成。
done := coop.After(time.Second, func() {
fmt.Println("Hello world")
})
<- 已完成每隔 duration 执行 fn 一次,永不停止。下面的示例会在每秒钟一次打印"Hello World"。
coop.Every(time.Second, func() {
fmt.Println("Hello world")
})暂无开放 Issues,或尚未同步最近议题。