Українська
Тема 3. Стан гонитви, взаємоблокування та голодування; засоби синхронізації потоків у C#
Мета: ознайомитися з причинами стану гонитви, взаємоблокування та голодування потоків; навчитися захищати спільні дані засобами Interlocked, lock і Lock, координувати потоки умовними змінними Monitor, семафорами, ReaderWriterLockSlim, ManualResetEventSlim, CountdownEvent і Barrier; опанувати способи запобігання взаємоблокуванню, діагностику зависань і вимірювання ціни синхронізації.
Зміст лекції
- Стан гонитви та взаємне виключення — Спільний стан і стан гонитви · Вимоги до взаємного виключення · Атомарні операції: клас Interlocked
- Блокування та умовні змінні — Оператор lock, тип Lock і клас Monitor · Умовні змінні: Monitor.Wait, Pulse, PulseAll · Mutex, Semaphore і SemaphoreSlim
- Спін-блокування та сигнальні засоби — ReaderWriterLockSlim, SpinLock і SpinWait · Сигнальні засоби
- Взаємоблокування та ціна синхронізації — Взаємоблокування · Голодування, livelock, інверсія пріоритетів і конвой блокувань · Класичні задачі синхронізації · Ціна синхронізації
- Приклади та типові помилки — Приклади програм · Типові помилки