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