Package Usage: go: github.com/gammazero/channelqueue
Package channelqueue implements a queue that uses channels for input and
output to provide concurrent access to a re-sizable queue. This allows the
queue to be used like a channel. Closing the input channel closes the output
channel when all queued items are read, consistent with channel behavior. In
other words channelqueue is a dynamically buffered channel with up to
infinite capacity.
ChannelQueue also supports circular buffer behavior when created using
`NewRing`. When the buffer is full, writing an additional item discards the
oldest buffered item.
When specifying an unlimited buffer capacity use caution as the buffer is
still limited by the resources available on the host system.
The behavior of channelqueue differs from the behavior of a normal channel
in one important way: After writing to the In() channel, the data may not be
immediately available on the Out() channel (until the buffer goroutine is
scheduled), and may be missed by a non-blocking select.
This implementation is based on ideas/examples from:
https://github.com/eapache/channels
4 versions
Latest release: almost 2 years ago
14 dependent packages
View more package details: https://packages.ecosystem.code.gouv.fr/registries/proxy.golang.org/packages/github.com/gammazero/channelqueue