LENSHOOD / go-lock-free-ring-buffer

Lock-free ring buffer by golang
https://pkg.go.dev/github.com/LENSHOOD/go-lock-free-ring-buffer@v0.2.0
MIT License
47 stars 1 forks source link

SingleProducerOffer的一点疑惑 #2

Closed bwb0101 closed 1 year ago

bwb0101 commented 1 year ago

func (r *nodeBased[T]) SingleProducerOffer(valueSupplier func() (v T, finish bool)) { v, finish := valueSupplier() if finish { return }

for r.Offer(v) { 这的作用是直到加成功为止吧?不应该是 !r.Offer吗?
}

}

LENSHOOD commented 1 year ago

看了下确实是的,而且代码逻辑也不对。

NodeBased 因为还没有实现 SPMC 和 MPSC 的能力,所以当初只是为了满足 interface 顺手写了个 wrapper,测试也没有覆盖到,没想到挖坑了。

我会先拿测试保护起来,感谢指正,谢谢!

bwb0101 commented 1 year ago

的确看起来怪怪的😁