为什么我的golang无锁队列总是停在那里?

为什么我的golang无锁队列总是停在那里?,第1张

为什么我的golang无锁队列总是停在那里?

这是上面改写的通道,建议使用@mkb(排除无限队列大小)。

它不会锁定。

我建议您使用渠道,除非您有充分的理由不这样做,因为Go团队已花费大量精力使其变得可靠,高性能且易于使用。

package mainimport (    "fmt"    "runtime"    "sync"    "time")const (    MAX_DATA_SIZE = 100)func main() {    runtime.GOMAXPROCS(4)    var wg sync.WaitGroup    wg.Add(20)    queue := make(chan time.Time, 10)    for i := 0; i < 10; i++ {        go func() { defer wg.Done() for j := 0; j < MAX_DATA_SIZE; j++ {     t := time.Now()     queue <- t     fmt.Println("enq = ", t) }        }()    }    for i := 0; i < 10; i++ {        go func() { defer wg.Done() for j := 0; j < MAX_DATA_SIZE; j++ {     val := <-queue     fmt.Println("deq = ", val) }        }()    }    wg.Wait()}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存