This article shows in a simple way the foundation of libraries like DurableTask and its descendant Azure Durable Functions. It starts with the history of exception based flow control and ends by showing how Task-based API can be used to provide a similar interruptible flow with no abusive exception usage. Dark ages of exception-driven programming … Continue reading Unexceptional non-blocking task-based flow control in .NET
This post describes my work on trying to build a faster MemoryPool for .NET called Thruster. There are existing implementations, like the one provided by System.Memory or Kestrel, the new and shiny .NET web server. Let's see what approached did I take and how it ended. What is a MemoryPool? The memory pool is a … Continue reading Thruster, building a not so fast memory pool
Why are they still working on the whole async-await thing? What is Task, Async Await, ValueTask, IValueTaskSource ? How to keep your sanity in modern .NET world?
TL;DR This is a follow up post to Async pump for better throughput in Azure. Please read the first before moving forward. Feedback I've been given a lot of feedback about my Async pump post. In a few cases this blog post from Ayende was quoted as it describes exactly the same approach. You can … Continue reading Async programming model
This post is followed up by https://blog.scooletz.com/2017/02/20/async-programming-model TL;DR Introducing async-await has changed a lot. Now, with some compiler's help we're able to squeeze out more throughput from our machines, which may lower costs and increase throughput. In this blog post we'll push the boundaries even further by questioning the need of immediate awaiting on a … Continue reading Async pump for better throughput in Azure
TL;DR This is a summary of my investigation about writing a fast and well designed concurrent queue for akka.net which performance was drastically low for 32bit application. Take a look at PR here. If you're interested in writing a well performing no-alloc applications with mechanical symapthy in mind or you're simply interested in good .NET … Continue reading .NET volatile write performance degradation in x86
In the last post I've shown some optimizations one can apply to reduce the overhead on creating asynchronous state machines. Let's dive into the async world again and consider helper methods provided by the Task class, especially Task.WhenAll. The method works in a following way. It accepts an array of tasks and returns a task … Continue reading Task.WhenAll tests