Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eapache/channels

Golang channel helpers and special types
https://github.com/eapache/channels

buffer channels go golang

Last synced: about 23 hours ago
JSON representation

Golang channel helpers and special types

Awesome Lists containing this project

README

        

**WARNING**: This package is end-of-life, has several long-standing bugs, and
is not receiving any more fixes. Additionally, the design has several problems
and no longer really makes sense given Go's addition of generic types.
It was still an interesting project, and might provide inspiration for tricks
you can do with channels, but caveat emptor.

channels
========

[![GoDoc](https://godoc.org/github.com/eapache/channels?status.png)](https://godoc.org/github.com/eapache/channels)
[![Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-active-blue.svg)](https://eapache.github.io/conduct.html)

A collection of helper functions and special types for working with and
extending [Go](https://golang.org/)'s existing channels. Due to limitations
of Go's type system, importing this library directly is often not practical for
production code. It serves equally well, however, as a reference guide and
template for implementing many common idioms; if you use it in this way I would
appreciate the inclusion of some sort of credit in the resulting code.

See https://godoc.org/github.com/eapache/channels for full documentation or
https://gopkg.in/eapache/channels.v1 for a versioned import path.

Requires Go version 1.1 or later, as certain necessary elements of the `reflect`
package were not present in 1.0.

Most of the buffered channel types in this package are backed by a very fast
queue implementation that used to be built into this package but has now been
extracted into its own package at https://github.com/eapache/queue.

*Note:* Several types in this package provide so-called "infinite" buffers. Be
very careful using these, as no buffer is truly infinite. If such a buffer
grows too large your program will run out of memory and crash. Caveat emptor.