Поменяли object на Lock, и два потока встретились в критической секции
В .NET 9 появился новый примитив синхронизации System.Threading.Lock , и многие команды начали заменять привычные object -замки на новый тип в поисках более предсказуемого поведения и производительности. Но такая замена меняет саму механику работы lock : достаточно одного места, где экземпляр потеряет свой тип, чтобы два участка кода перестали синхронизироваться между собой. В статье разберемся, как именно устроена новая модель блокировок в C#, где компилятор помогает заметить проблему, а где она остаётся скрытой, и стоит ли переходить на Lock ради заявленных преимуществ. Разобраться глубже
https://habr.com/ru/companies/otus/articles/1087292/
#C# #NET #компиляция_кода #производительность_приложений #многопоточность #блокировки #синхронизация_потоков #оптимизация_кода