This is the tenth part of the Concurrency series. For your convenience you can find other parts in the table of contents in Part 1 – Mutex performance in .NET We have already seen how to implement custom mutex using memory mapped files and CAS operation. It has one drawback — it is not reentrant. … Continue reading Concurrency Part 10 — Reentrant mutex
Tag: PInvoke
Concurrency Part 8 — Tracking mutex owner
This is the eighth part of the Concurrency series. For your convenience you can find other parts in the table of contents in Part 1 – Mutex performance in .NET We know how to use global mutexes to synchronize processes. However, there is a big drawback — we don’t know who owns the mutex and … Continue reading Concurrency Part 8 — Tracking mutex owner
Decreasing pain of stolen focus
One of the most irritating thing in Windows is no way to prevent an application from stealing focus. There are multiple questions on Stack Overflow regarding the issue, there are rumors that Microsoft wanted to do something but they cannot detect it reliably. There are workarounds like ForegroundLockTimeout but ultimately there is no good solution. … Continue reading Decreasing pain of stolen focus
Custom memory allocation in C# Part 8 — Unsafe list in .NET Core x64
This is the eighth part of the Custom memory allocation series. For your convenience you can find other parts in the table of contents in Part 1 — Allocating object on a stack Today we are going to revisit an Unsafe list example using .NET Core. Since I use x64 edition, I need to adjust … Continue reading Custom memory allocation in C# Part 8 — Unsafe list in .NET Core x64
Custom memory allocation in C# Part 7 — Stack allocation once again
This is the seventh part of the Custom memory allocation series. For your convenience you can find other parts in the table of contents in Part 1 — Allocating object on a stack We know how to allocate object on a stack, however, we did this in .NET Framework. Can we do the same in … Continue reading Custom memory allocation in C# Part 7 — Stack allocation once again