Avoid thread synchronization problems with Roslyn: Synchronization primitives traps

#277 – September 22, 2019

sponsor

C# Developers are in demand on Vettery

Vettery is an online hiring marketplace that's changing the way people hire and get hired. Ready for a bold career move? Make a free profile, name your salary, and connect with hiring managers from top employers today.

this week's favorite

Avoid thread synchronization problems with Roslyn: Synchronization primitives traps

Multithreading is one of the most difficult aspects of programming and can cause a lot of headaches. The main source of problems is often the improper usage of synchronization mechanisms, which can result in deadlocks or a complete lack of synchronization despite our expectations. The effect of the broken synchronization can be analyzed with various runtime tools, but it would be nice to have an asset that is able to report all those issues in the design time right on the stage of writing code. This blog post continues the series Avoid thread synchronization problems with Roslyn and this part is about the traps related to the usage of synchronization primitives.

Object Exporter

Object Exporter creates serializations of in memory objects from your various debugging windows. Currently supported output formats are: CSharp Object Initialization Code, JSON and XML.

NeatInput

Useful and clean .NET Standard library to monitor keyboard and mouse input on Windows.

A small overview of SIMD in .NET/C#

Here’s a quick look at algorithm vectorization capabilities in .NET Framework and .NET Core. This article is for those who know nothing about these techniques. I will also show that .NET doesn’t actually lag behind "real compiled" languages for native development.

StringBuilder performance pitfalls

In .NET, strings are immutable. Each operation that appears to modify a string object actually creates a new string. When you are using a loop to concatenate a random number of strings, you should use a StringBuilder to improve the performance.StringBuilder represents a mutable string of characters. So, you can modify it without allocating. I sometimes see some bad usages of the StringBuilder which may reduce its benefits. In this post, we'll see some patterns that can be optimized.

newsletters