Wednesday, March 11, 2009

Running a parallelized C# threaded application using different number of cores in Windows Vista

This video shows the difference between using one core and four cores in a highly threaded, parallelized application programmed in Visual C# 3.0 (2008). Many people say multicore CPUs are useless. Watching this video you will find out that there is a lot of power in multicore CPUs. Developers must tackle the multicore revolution to exploit multicore CPUs in new applications.

The application uses the excellent AForge.Net C# imaging library. For more information about it, visit:
The application shown in the video is developed and explained in Chapter 12: Developing a Completely Parallelized Application.
This is the chapter's table of contents:

Joining many different parallelized pieces into a complete application
Time for action – Creating an opacity effect in an independent thread
Running code out of the UI thread
Time for action – Creating a safe method to change the opacity
Blocking the UI—Forbidden with multithreading code
Time for action – Creating a class to run a task in an independent thread
Time for action – Putting the logic into methods to simplify running tasks
in a pool of threads
Time for action – Queuing requests, running threads, and updating the UI
Combining threads with a pool of threads and the UI thread
Time for action – Creating a specialized parallel algorithm piece subclass
to run concurrently with the pool of threads
Time for action – Creating a specialized parallel algorithm coordination
subclass to run concurrently with the pool of threads
Time for action – Overriding methods in the brightness adjustment
coordination subclass
Time for action – Starting new threads in a new window
Creating threads inside other threads
Time for action – Showing new windows without blocking the user
Multiple windows and one UI thread for all of them
Rationalizing multithreaded code

For more information visit:

Wednesday, March 4, 2009

C# 2008 and 2010, multicore, .Net Parallel Extensions and PLINQ

The book includes a lot of content dedicated to .Net Parallel Extensions (currently in CTP) and PLINQ (Parallelized LINQ). They will be available in C# 2010 (C# 4.0) and .Net 4.0.
This video shows the application developed in Chapter 11: Coding with .NET Parallel Extensions.
The chapter's table of contents:

Parallelizing loops using .NET extensions
Time for action – Downloading and installing the .NET Parallel Extensions
No silver bullet
Time for action – Downloading and installing the imaging library
Time for action – Creating an independent class to run in parallel without
side effects
Counting and showing blobs while avoiding side effects
Time for action – Running concurrent nebula finders using a
parallelized loop
Using a parallelized ForEach loop
Coding with delegates in parallelized loops
Working with a concurrent queue
Controlling exceptions in parallelized loops
Time for action – Showing the results in the UI
Combining delegates with a BackgroundWorker
Retrieving elements from a concurrent queue in a producer-consumer scheme
Time for action – Providing feedback to the UI using a producer-consumer
Creating an asynchronous task combined with a synchronous parallel loop
Time for action – Invoking a UI update from a task
Providing feedback when each job is finished
Using lambda expressions to simplify the code
Parallelizing loops with ranges
Parallelizing queries
Time for action – Parallelized counter
Parallelizing LINQ queries with PLINQ
Specifying the degree of parallelism for PLINQ
Parallelizing statistics and multiple queries