Article: Using the Concurrency and Coordination Runtime
Nick Gunn provides a practical introduction using the Concurrency and Coordination Runtime. CCR radically changes the way multi-threaded applications are written in .NET, shifting the focus from threads and locks to lightweight, asynchronous tasks. The Concurrency and Coordination Runtime, also known as CCR, offers actor-style concurrency for .NET applications. Nick describes the CCR as:
The Concurrency and Coordination Runtime (CCR) is an asynchronous message-passing library for the .NET platform that provides a set of small but powerful primitives that enable a different approach to structuring applications. The effective use of the CCR will result in an application that will be more responsive, will scale better and will be more robust. The intriguing aspect about it is that it can deliver these benefits at the same time as reducing (and sometimes removing) the need for you to explicitly deal with threads (and failures on these threads), locks, mutexes and other low-level synchronization primitives.
Nick lives in Sydney where he works for Macquarie Bank, as a senior developer (trading systems). He has previously worked in London for HSBC, Barclays Capital and Credit Suisse. His professional interests include distributed systems and models of computation. He graduated from Manchester University with a degree in Computing and Information Systems. He maintains a technical blog on CCR and related topics at http://iodyner.spaces.live.com/
Java implementation possible?
Re: Java implementation possible?
Does this compile?
new Arbiter< Arbiter < string > >(port, ProcessMessages)
since Arbiter is static. Am I using a different version or is there anything else?
Ccr.Core Version: 2.0.913.0
Well done for the article, I was looking for something like this!
IMHO the code that is written in side effect. For example I get code :
static IEnumerator<ITask> ProcessMessages(Port<string> port)
bool fDone = false;
yield return port.Receive(message =>
fDone = true;
For me when you doing some yield, the code should not change other states so it make me confuse