Controlling access to shared resources in an asynchronous world
In my last post I introduced the AsyncLock and AsyncDebouncedFunction. AsyncLock is a fantastic way of asynchronously holding a ‘lock’ without actually blocking threads. It is the natural go to class for resource synchronization, but there are alternatives (with caveats). In .Net 4.5 the ConcurrentExclusiveSchedulerPair was introduced, offering a powerful approach to concurrency control. Using this …