Parallel.Pipes
1.1.1
See the version list below for details.
dotnet add package Parallel.Pipes --version 1.1.1
NuGet\Install-Package Parallel.Pipes -Version 1.1.1
<PackageReference Include="Parallel.Pipes" Version="1.1.1" />
paket add Parallel.Pipes --version 1.1.1
#r "nuget: Parallel.Pipes, 1.1.1"
// Install Parallel.Pipes as a Cake Addin #addin nuget:?package=Parallel.Pipes&version=1.1.1 // Install Parallel.Pipes as a Cake Tool #tool nuget:?package=Parallel.Pipes&version=1.1.1
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 | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net is compatible. |
-
- QuickGraph (>= 3.6.61119.7)
- StickySharedResources (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
** Actually included the right DLL **
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)