gpt4 book ai didi

go - 何时使用缓冲 channel ?

转载 作者:IT老高 更新时间:2023-10-28 13:02:20 25 4
gpt4 key购买 nike

缓冲 channel 的用例是什么?如果我想要多个并行操作,我可以使用默认的同步 channel eq。

package main
import "fmt"
import "time"

func longLastingProcess(c chan string) {
time.Sleep(2000 * time.Millisecond)
c <- "tadaa"
}

func main() {
c := make(chan string)
go longLastingProcess(c)
go longLastingProcess(c)
go longLastingProcess(c)
fmt.Println(<- c)
}

增加缓冲区大小的实际情况是什么?

最佳答案

给出一个更具体的用例:

假设您希望您的 channel 代表一个任务队列,以便任务调度程序可以将作业发送到队列中,并且工作线程可以通过在 channel 中接收作业来使用它。

进一步假设,尽管通常您希望每个作业都能及时处理,但工作人员完成任务所需的时间比调度程序安排它所花费的时间要长。

拥有缓冲区允许调度程序将作业存放在队列中,并且仍然对用户输入(或网络流量或其他)保持响应,因为它不必在每次调度任务时工作人员准备好之前休眠。相反,它开展自己的业务,并相信 worker 会在较安静的时期迎头 catch 。

如果你想要一个更具体的例子来处理特定的软件,那么我会看看我能做什么,但我希望这能满足你的需求。

关于go - 何时使用缓冲 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113410/

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