В лекции разбираем две коварные проблемы конкурентности — Livelock и Starvation: чем они отличаются от
Deadlock, как воспроизвести их в C# (например, через
Monitor.TryEnter и
lock), по каким симптомам диагностировать (рост
CPU, «вечные» задачи, логи) и какими приёмами предотвращать: случайные паузы и backoff, честные очереди (
ConcurrentQueue<T>, FIFO), корректные приоритеты потоков и настройки
ReaderWriterLockSlim.