https://github.com/skoowoo/ringbuffer
ringbuffer是用来替代Go语言的channel,提高海量数据收发的性能
https://github.com/skoowoo/ringbuffer
Last synced: about 2 months ago
JSON representation
ringbuffer是用来替代Go语言的channel,提高海量数据收发的性能
- Host: GitHub
- URL: https://github.com/skoowoo/ringbuffer
- Owner: skoowoo
- License: bsd-2-clause
- Created: 2014-09-06T06:59:16.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2021-02-07T08:42:25.000Z (over 4 years ago)
- Last Synced: 2025-04-09T21:56:30.250Z (about 2 months ago)
- Language: Go
- Size: 3.91 KB
- Stars: 29
- Watchers: 3
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
ringbuffer
==========ringbuffer是用来替代Go语言的channel,提高海量数据收发的性能。目前只支持一个写。
#####使用方法
ring := ringbuffer.NewRing(100, 1000)
// 一个写端
go func() {
var wbuf *ringbuffer.Bufferfor i := 0; i < 10000; i++ {
wbuf = ring.Write(wbuf, i)
}
ring.Stop(wbuf)
}()// 10个读端
var wg sync.WaitGroupfor i := 0; i < 10; i++ {
wg.Add(1)go func() {
defer wg.Done()var (
rbuf *ringbuffer.Buffer
e interface{}
)for {
if e, rbuf = ring.Read(rbuf); rbuf == nil {
break
}
log.Println(e.(int))
}
}()
}wg.Wait()