单通道执行常规死锁

单通道执行常规死锁,第1张

单通道执行常规死锁

一种可能的解决方案是避免使用select语句,并为接收者(或发送者,或两者)使用单独的goroutine。例:

package main    import "sync"func worker(res chan bool, wg *sync.WaitGroup) {    res <- true    wg.Done()}func receiver(res chan bool, wg *sync.WaitGroup) {    for range res {    }    wg.Done()}func main() {    var wg, wg2 sync.WaitGroup    wg.Add(1)    wg2.Add(10)    found := make(chan bool)    go receiver(found, &wg)    for i := 0; i < 10; i++ {        go worker(found, &wg2)    }    wg2.Wait()    close(found)    wg.Done()}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5039442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-15
下一篇2022-11-15

发表评论

登录后才能评论

评论列表(0条)

    保存