23 lines
1.2 KiB
Go
23 lines
1.2 KiB
Go
|
//go:generate go run gen.go
|
||
|
|
||
|
// Package async provides unbounded channel and queue structures that are
|
||
|
// designed for caching unlimited number of a concrete type. For better
|
||
|
// performance, a given type should be less or euqal than 16 bytes.
|
||
|
//
|
||
|
// The difference of an unbounded channel or queue is that unbounde channels
|
||
|
// can utilize select and channel semantics, whereas queue cannot. A user of
|
||
|
// this package should balance this tradeoff. For instance, an unbounded
|
||
|
// channel can provide zero waiting cost when trying to receiving an object
|
||
|
// when the receiving select statement has a default case, and a queue can
|
||
|
// only receive the object with a time amount of time, but depending on the
|
||
|
// number of queue item producer, the receiving time may increase accordingly.
|
||
|
//
|
||
|
// Delicate dance: One must aware that an unbounded channel may lead to
|
||
|
// OOM when the consuming speed of the buffer is lower than the producing
|
||
|
// speed constantly. However, such a channel may be fairly used for event
|
||
|
// delivering if the consumer of the channel consumes the incoming
|
||
|
// forever, such as even processing.
|
||
|
//
|
||
|
// This package involves code generators, see gen.go for more details.
|
||
|
package async
|