Последние пару недель читаю книгу Concurrent Programming on Windows by Joe Duffy, в которой тема многопоточности раскрыта на очень глубоком уровне. Особенно мне показались интересными главы "Windows Kernel Synchronization" и "Control and Data Synchronization", в которых описываются всевозможные средства синхронизации в Windows вцелом и в .Net в частности. Так, например, я не знал, что за Monitor.Wait и Monitor.Pulse стоят condition variables, и как они работают.
Далее я составил план изучения темы многопоточности и синхронизации в Windows.
Если у вас есть хорошее понимание по каждому пункту, то наверное вместо книжки Джо Даффи можно почитать что-нибудь другое.
Далее я составил план изучения темы многопоточности и синхронизации в Windows.
Если у вас есть хорошее понимание по каждому пункту, то наверное вместо книжки Джо Даффи можно почитать что-нибудь другое.
- Модели ассинхронного программирования
- Как работает Monitor
- Monitor.Wait, Monitor.Pulse, Condition variables, написание блокирующей очереди с использованием методов класса Monitor
- Ключевое слово volatile, какие проблемы позволяет решить, MemoryBarrier, VolatileRead, VolatileWrite
- ManualResetEvent, AutoResetEvent, чем отличаются, по какому принципу выбираются потоки для пробуждения при переводе евента в сигнальное состояние
- Семафоры vs Мьютексы
- ReadWriteLockSlim и три режима работы
- Многопоточность и GUI
- Что такое Livelock
- Что такое Deadlock, какие существуют подходы для устранения дэдлоков: порядок захвата и освобождения ресурсов, создание метода для поиска подходящего ресурса по id, захват ресурса с таймаутом, подход с использованием WaitHandle.WaitAll
- Lock-free programming
- TLS, Dynamic and Static thread local storage