This page contains the latest updates of the Parallel Framework. Version history is maintained here and the latest versions are available for download.
Latest version: 3
Released: 16-03-2009
(scroll down to download the latest package)
What is the Parallel Framework?
In short, the Parallel Framework is a library of classes which enables you to write your .Net code in a parallel fashion. It is specifically written to support task-parallelism for multi-core (and multi-processor) machines.
The Parallel Framework can be used with every .Net language, like C#, VB.Net, Managed C++, J#, F#, etc. It's free of any charge and publically available to anyone (please read the copyright notice delivered with the binaries).
This lightweight Parallel Framework makes it easier for people to write parallel code. It's a simple framework to work with tasks. There are several more frameworks available on the internet, but most are a lot more complex and have additional features that I (and probably you) don't need most of the time.
To code in parallelism, is to think in tasks. Each task can run on its own and runs in a separate process (thread) than the other tasks and the application. Define your code into tasks rather than into threads. As tasks will scale better on your current CPU, and will automatically scale even better on your future CPUs.
For more information, please read the following article:
[ToDo: Link to more general information on the Parallel Framework]
What is Parallelism and why do we need it?
For more background information on parallelism, please read the following two articles:
- Parallel Programming using the Parallel FrameworkThis article describes an older version of the Parallel Framework, but also describes Parallelism in general.
- Parallel Computing with SocketsThis article describes how to use parallelism with sockets (without the use of the Parallel Framework) and also describes why parallelism in general is important for all software.
Structure of the Parallel Framework
The Parallel Framework has the following class structure.
What is delivered with the Parallel Framework package?
The package consists of:
- Binary DLL
- Documentation (with examples)
- Source code of the complete framework
Speed-o-meter
version 3
Tested on:
- CPU: Intel(R) Core(TM)2 32Bit T7200 @ 2.00GHz
- Mem: 4 GB
- OS: Vista Ultimate 32Bit
Speedtest results:
- Average time to start and run tasks using ParallelThreadPool: 0,0143 milisec
- Average time to start and run tasks using ParallelDispatcher: 0,0018 milisec
Version history
version 3 (16-03-2009)
- Fixed a bug which occurred in the task-callback when a null was passed as state. In such a situation the callback was not called.
- Introduced the ParallelDispatcher. A new and faster method of starting and running tasks.
- Created developer documentation (for C#, VB.Net and managed C++) including example code.
- Removed the EndTask method from the ParallelTaskPool class. The EndTask method is now called automatically by the taskpool when a task has finished.
version 2 (2009-02-14)
- Fixed a bug in the task pool, where a deadlock situation could occur when running a lot of tasks who create new tasks themselves.
- Fixed a bug in the task pool, where the maximum amount of concurrent tasks was set to 10 instead of linking it to the number of concurrent threads in the thread pool.
- Uses more precise locking now, which could prevent memory errors from occurring (not that there were any known issues).
version 1 (2009-02-05):
- Initial version
Downloads
Latest Version:
ParallelFramework v3.zip (142.2 KB)
Documentation:
CHM Format: ParallelFrameworkv3_Docs.chm (144.28 KB)
HTML Format: ParallelFrameworkv3_Docs.zip (268.82 KB) (Open the index.htm to start)
Remember Me
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.