Svitla Smart Talk: Async With Coroutines and Fibers in C#


Async has multiple problems. It requires a specific return type, it can switch thread at any time, it causes deadlocks, it uses global state, etc. Can we do better? Can we do async/await without all the mess that comes with it?

In Svitla Smart Talk, you will learn how async is implemented, see the problems it creates, and explore other possible approaches. We will show you how to reimplement some of its features with monads, coroutines, and fibers to see how it could look like in an alternative world. We’ll see if we can do better than the thread-pool-based approach.
This is loosely related to project Loom in the JVM world which explores fibers to improve threading.


Adam Furmanek is a professional software engineer with over 10 years of experience under his belt. Currently working at Amazon with Big Data, Spark, and Machine Learning, Adam has always been interested in diving deep and exploring machine code, as well as understanding the internal details of the technology he uses every day. He enjoys debugging, decompiling, and disassembling code to understand memory models, concurrency problems, and other hidden details buried deep inside. Blog:


by Svitla Team
April 14, 2021

Related articles

Unit testing in C# and .NET Core
by Svitla Team
June 24, 2020
Cloud databases on AWS with use cases
Cloud Databases on AWS
by Svitla Team
February 24, 2021