cspsharp-net2 1.0.0

dotnet add package cspsharp-net2 --version 1.0.0
                    
NuGet\Install-Package cspsharp-net2 -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="cspsharp-net2" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="cspsharp-net2" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="cspsharp-net2" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add cspsharp-net2 --version 1.0.0
                    
#r "nuget: cspsharp-net2, 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.
#addin nuget:?package=cspsharp-net2&version=1.0.0
                    
Install cspsharp-net2 as a Cake Addin
#tool nuget:?package=cspsharp-net2&version=1.0.0
                    
Install cspsharp-net2 as a Cake Tool

CSPsharp (CSP#)

.NET Core implementation of Communicating Sequencial Processes (CSP)

CSP# is an implementation of Communicating Sequential Processes (CSP) for .NET environments. It is based on an existing, well established Java implementation, JCSP. There is paper, currently in development, that describes the process of implementation with the details of the obstacles overcome and the results. The project has delivered a fully functional and robust CSP implementation written in C#. It is the only valid option for .NET developers at present. CSP# is an object oriented CSP library aiding process-oriented programming for the .NET Core Framework. Similar to JCSP, it relies on the system-based threads.

This implementation contains CSP concepts such as Process, Channel, Timer, Guard, Alternative, Barrier, Bucket and AltingBarrier. The networking package is based on an updated version of original JCSP networking package. Unfortunately, unlike JCSP, CSP# lacks any GUI packages and cannot be used with any user Interface directly because this capability not being present in .NET Core.

The library was evaluated with multiple examples based on previous work, the JCSP documentation and with additional custom tests created for the purpose of this project. CSP# is the biggest, most feature-rich and only fully operational CSP based library for .NET. Apart from JCSP this is the only library containing Bucket and AltingBarrier concepts.

The tests and examples mentioned in the previous paragraph can be found on the author's GitHub. These projects are called CSPsharp-UCaPE and CSPsharp-docs.

Installation

The library can be added directly to your project. If you do not wish to see the code, you can open the solution and publish all the parts of the library. Then import these DLLs to your project. The library is also available on NuGet. You need to obtain all parts separately. cspsharp-lang, cspsharp-net2, cspsharp-PlugNplay. cspsharp-utils is included in cspsharp-lang. You can use the Package Manager.

How to use?

Not certain where to start and how does that work? The best place to start would be to read through the free books Using Concurrency and Parallelism Effectively. These books and the JCSP used in the examples were the base for the library conversion achieved in this project. The discussed examples, language and the operation can be identically applied to the CSP#.

It could be a good idea to look at the CSPforJava on GitHub and check the Documentation examples provided there. Similarities between Java and C# should ease the understanding of the content. Also, some of these examples were also translated to CSP# and can be found on GitHub.

Want to know more?

There is a paper (currently in development) describing the conversion proces, that also explain some mechanics. It's also worthwile to read original paper by Tony Hoare and papers about other attempts to create CSP.NET from Kevin Chalmers and Alex Lehmberg.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
.NET Core netcoreapp2.1 is compatible.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
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.0.0 601 5/23/2020