streaming-concurrency: Concurrency support for the streaming ecosystem

[ data, library, mit, streaming ] [ Propose Tags ]

There are two primary higher-level use-cases for this library:

  1. Merge multiple Streams together.

  2. A conceptual Stream-based equivalent to parMap (albeit utilising concurrency rather than true parallelism).

However, low-level functions are also exposed so you can construct your own methods of concurrently using Streams (and there are also non-Stream-specific functions if you wish to use it with other data types).


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.2.0.0, 0.3.0.0, 0.3.0.1, 0.3.1.0, 0.3.1.1, 0.3.1.2, 0.3.1.3 (info)
Change log ChangeLog.md
Dependencies base (>=4 && <5), exceptions (>=0.6 && <0.9), lifted-async (>=0.9.3 && <0.10), monad-control (>=1 && <2), stm (>=2.4 && <3), streaming (>=0.1.4.0 && <0.2), streaming-with (>=0.1 && <0.2), transformers-base [details]
License MIT
Copyright Ivan Lazar Miljenovic
Author Ivan Lazar Miljenovic
Maintainer Ivan.Miljenovic@gmail.com
Category Data, Streaming
Source repo head: git clone https://github.com/ivan-m/streaming-concurrency.git
Uploaded by IvanMiljenovic at 2017-07-05T03:28:09Z
Distributions
Reverse Dependencies 1 direct, 1 indirect [details]
Downloads 4160 total (25 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-07-05 [all 1 reports]

Readme for streaming-concurrency-0.3.0.0

[back to package description]

streaming-concurrency

Hackage Build Status

Concurrency for the streaming ecosystem

There are two primary higher-level use-cases for this library:

  1. Merge multiple Streams together.

  2. A conceptual Stream-based equivalent to parMap (albeit utilising concurrency rather than true parallelism).

However, low-level functions are also exposed so you can construct your own methods of concurrently using Streams (and there are also non-Stream-specific functions if you wish to use it with other data types).

Conceptually, the approach taken is to consider a typical correspondence system with an in-basket/tray for receiving messages for others, and an out-basket/tray to be later dealt with. Inputs are thus provided into the InBasket and removed once available from the OutBasket.

Thanks and recognition

The code here is heavily based upon -- and borrows the underlying Buffer code from -- Gabriel Gonzalez's pipes-concurrency. It differs from it primarily in being more bracket-oriented rather than providing a spawn primitive, thus not requiring explicit garbage collection.

Another main difference is that the naming of the input and output types has been switched around: pipes-concurrency seems to consider them from the point of view of the supplying/consuming Pipes, whereas here they are considered from the point of view of the Buffer itself.