Posts

Showing posts with the label Threading

Concurrent Programming

Asynchronous Programming Parallel Programming Multithreaded Programming

Multithreaded Programming

Synchronization primitives Semaphore Slim

Wait Many

IAsyncResult needs to be closed.

How to invoke an event handlers asynchronously

How to invoke an event or delegate handlers asynchronously Variant with the  Parallel class (TPL). public void OnMyEvent( String myValue) {     var multiCastDelegate = Interlocked .CompareExchange( ref MyEvent, null , null );     if (multiCastDelegate == null )      {         return ;      }     var handlers = multiCastDelegate.GetInvocationList()         .Cast< EventHandler < MyEventArgs >>();     var args = new MyEventArgs (myValue);     Parallel .ForEach(         handlers,         handler => handler( this , args)); }   Old variant with the Asynchronous delegates (APM). public void OnMyEventOld( String myValue) {     var multiCastDelegate = Interlocked .CompareExc...

The .NET Asynchrony And Multithreading lecture (in progress, not finished)

Plain Threading     Thread.Sleep(0) vs Thread.Yield()     Foreground and Background Threads     finally blocks in the execution stack of background threads are circumvented         (including using)     Thread Priority     Memory-mapped files     Exception Handling         Swallow of an exception in the main thread.         Centralized exception handling             global event             only for an UI thread             AppDomain.CurrentDomain.UnhandledException                 app will shutdown or <legacyunhandledexceptionpolicy> Thread Pooling     Thread.CurrentThread.IsThreadPoolThread     Oversubscription         hill-climbing algorithm   ...