已知,当select 存在多个 case时会随机选择一个满足条件的case执行。现在我们有一个需求:我们有一个函数会持续不间断地从ch1和ch2中分别接收任务1和任务2,如何确保当ch1和ch2同时达到就绪状态时,优先执行任务1,在没有任务1的时候再去执行任务2呢?
func worker2(ch1, ch2 <-chan int, stopCh chan struct{
}) {
for {
select {
在Go语言中,当select有多个case时,通常会随机选择一个就绪的case执行。然而,为了确保在ch1和ch2都就绪时优先处理来自ch1的任务1,而在没有任务1时执行任务2,可以利用select的特性来定制优先级。本文将探讨如何实现这样的优先级选择策略。
已知,当select 存在多个 case时会随机选择一个满足条件的case执行。现在我们有一个需求:我们有一个函数会持续不间断地从ch1和ch2中分别接收任务1和任务2,如何确保当ch1和ch2同时达到就绪状态时,优先执行任务1,在没有任务1的时候再去执行任务2呢?
func worker2(ch1, ch2 <-chan int, stopCh chan struct{
}) {
for {
select {
460
774
2153