Parallel.Pipes 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Parallel.Pipes --version 1.1.0                
NuGet\Install-Package Parallel.Pipes -Version 1.1.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.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Parallel.Pipes --version 1.1.0                
#r "nuget: Parallel.Pipes, 1.1.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.1.0

// Install Parallel.Pipes as a Cake Tool
#tool nuget:?package=Parallel.Pipes&version=1.1.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,258 1/2/2016
1.2.3 961 1/2/2016
1.2.2 987 1/2/2016
1.2.1 1,002 1/2/2016
1.2.0 1,006 1/2/2016
1.1.3 996 12/30/2015
1.1.2 990 12/30/2015
1.1.1 979 12/28/2015
1.1.0 986 12/28/2015
1.0.0 1,105 12/26/2015

This release has removed some of the unnecessary assumptions against pipes and added the following pipes:

* Transform Pipe (X -> Y)
* Source Pipe
* Sink Pipe

It's also even easier to create new pipes. :-)

A few more examples exist in the test project on the repo too. You might want to think about how you could have a thread prepare to read or write to a pipe when blocked before looking at the examples! Have fun! (Might be added in a future version)