| 12345678910111213141516171819202122 |
- //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
|