Advertisement

C#, What Is Next?

Software Developer at Happy Pancake
Sep. 7, 2008
Advertisement

More Related Content

Advertisement
Advertisement

C#, What Is Next?

  1. C#, What’s next? Pieter Joost van de Sande [email_address]
  2. Multi core future
  3. int N = size; int P = 2 * Environment .ProcessorCount; int Chunk = N / P; // size of a work chunk ManualResetEvent signal = new ManualResetEvent ( false ); int counter = P; // use a counter to reduce kernel transitions for ( int c = 0; c < P; c++) { // for each chunk ThreadPool .QueueUserWorkItem(o => { int lc = ( int )o; for ( int i = lc * Chunk; // process one chunk i < (lc + 1 == P ? N : (lc + 1) * Chunk); // respect upper bound i++) { // original loop body for ( int j = 0; j < size; j++) { result[i, j] = 0; for ( int k = 0; k < size; k++) { result[i, j] += m1[i, k] * m2[k, j]; } } } if ( Interlocked .Decrement( ref counter) == 0) { // efficient interlocked ops signal.Set(); // and kernel transition only when done } }, c); } signal.WaitOne(); Error Prone High Overhead Tricks Knowledge of Synchronization Primitives Heavy Synchronization Lack of Thread Reuse
  4. Smart work stealing Worker Thread 1 Worker Thread 2 Program Thread Task 1 Task 2 Task 3 Task 5 Task 4
  5. Vragen? Feedback? Seminar? Congres? Pieter Joost van de Sande [email_address] Blog: http://born2code.net Site: www.sogyo.nl
Advertisement