Golang 并发编程中:为什么在 for select 的 case 分支中使用 return 会导致阻塞?

golang 并发编程中:为什么在 for select 的 case 分支中使用 return 会导致阻塞?

for select 里使用 return 阻塞问题

golang 并发编程中,使用 for select 语句处理多个通道提供了便捷的方式。然而,当在 for select 的 case 分支中使用 return 语句时,可能会导致阻塞。

考虑以下示例代码:

package main

import (
    "fmt"
    "sync"
)

type cache struct {
    ch chan int
}

var (
    _cache *cache
    _once sync.once
)

func newcache() *cache {
    _once.do(func() {
        _cache = &cache{
            ch: make(chan int),
        }
        _cache.monitor()
    })
    return _cache
}

func (c *cache) push(x int) {
    c.ch <p>func (c *cache) monitor() {</p>
go func() {
    for {
        select {
        case result, ok := <p>}</p>

以上就是Golang 并发编程中:为什么在 for select 的 case 分支中使用 return 会导致阻塞?的详细内容,更多请关注其它相关文章!