mpsc

Version, currently master branch1 version
  • master branchlatestNov 28, 2021

github.com/jgaskins/mpsc

Multi-Producer/Single-Consumer channels in Crystal

12 stars
1 dependent
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  mpsc:
    github: jgaskins/mpsc
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
>= 0.36.1, < 2.0.0
License
MIT
Author
Jamie Gaskins <jgaskins@gmail.com>

Dependencies

This version declares no dependencies.

README

# mpsc

MPSC is an implementation of a multi-producer/single-consumer channel. This is useful if you only ever consume a channel from within a single fiber.

MPSC channels are unbounded. Calling `send` will never block.

**Note:** This shard is _not_ suitable for consuming the same channel from multiple fibers, even if they don't consume it concurrently. Once you call `receive` from a fiber, the receiving end of the channel is locked to that fiber.

## Installation

1. Add the dependency to your `shard.yml`:

   ```yaml
   dependencies:
     mpsc:
       github: jgaskins/mpsc
   ```

2. Run `shards install`

## Usage

```crystal
require "mpsc"

channel = MPSC::Channel(String).new

spawn channel.send "hello"

channel.receive # "hello"
```

## Contributing

1. Fork it (<https://github.com/jgaskins/mpsc/fork>)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Reformat the code (`crystal tool format .`)
4. Commit your changes (`git commit -am 'Add some feature'`)
5. Push to the branch (`git push origin my-new-feature`)
6. Create a new Pull Request

## Contributors

- [Jamie Gaskins](https://github.com/jgaskins) - creator and maintainer