Parallel.Pipes 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Parallel.Pipes --version 1.0.0                
NuGet\Install-Package Parallel.Pipes -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Parallel.Pipes" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Parallel.Pipes --version 1.0.0                
#r "nuget: Parallel.Pipes, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Parallel.Pipes as a Cake Addin
#addin nuget:?package=Parallel.Pipes&version=1.0.0

// Install Parallel.Pipes as a Cake Tool
#tool nuget:?package=Parallel.Pipes&version=1.0.0                

Pipes is a concurrency abstraction. Threads send messages to each other down pipes.

Pipes can block a thread sending a message while waiting for another thread to be ready to receive that message and vice versa, achieving synchronisation. Pipes can also be asynchronous at either end.

Pipes can be connected together to form pipe systems, which can provide complex behaviour. The resulting system forms a tree of inlets and outlets.

The locking and releasing of pipes is handled transparently and efficiently. The result is much easier to maintain code.

This project was inspired by Communicating Scala Objects although its eventual implementation changed considerably after realising the inherent complexity of what CSO aspires to.

Pipes is designed to be extensible:
* You can create your own pipes, either from the interfaces / base classes, or by combining existing pipes.
* You can extend the fluent building syntax.
* You can create your own inlets / outlets to achieve stricter behaviour. (For example, an inlet which only allows one thread to read from it at once).

Pipes also focusses on letting you decide the rules. While it will enforce safety settings by default, you can choose to ignore them.

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.4 1,260 1/2/2016
1.2.3 963 1/2/2016
1.2.2 989 1/2/2016
1.2.1 1,004 1/2/2016
1.2.0 1,008 1/2/2016
1.1.3 998 12/30/2015
1.1.2 992 12/30/2015
1.1.1 981 12/28/2015
1.1.0 988 12/28/2015
1.0.0 1,107 12/26/2015

This is the first release. This allows you to:
* Create simple one way in one way out pipes.
* Create capacity pipes allowing the sending of up to a number of messages asynchronously.
* Create two inlet / outlet pipes to allow multiple threads to listen for the same message.
* Create a splitting pipe, requiring readers to be ready at both outlets. This allows you to implement barrier synchronisation.
* Combine pipes into any pipe system forming a tree.
* Create all of your own components off of the simplified framework. Use the examples provided to learn how to write your own.