среда, 28 октября 2015 г.

Вопросы многопоточности

Последние пару недель читаю книгу Concurrent Programming on Windows by Joe Duffy, в которой тема многопоточности раскрыта на очень глубоком уровне. Особенно мне показались интересными главы "Windows Kernel Synchronization" и "Control and Data Synchronization", в которых описываются всевозможные средства синхронизации в Windows вцелом и в .Net в частности. Так, например, я не знал, что за Monitor.Wait и Monitor.Pulse стоят condition variables, и как они работают.
Далее я составил план изучения темы многопоточности и синхронизации в Windows.
Если у вас есть хорошее понимание по каждому пункту, то наверное вместо книжки Джо Даффи можно почитать что-нибудь другое.

  1. Модели ассинхронного программирования
  2. Как работает Monitor
  3. Monitor.Wait, Monitor.Pulse, Condition variables, написание блокирующей очереди с использованием методов класса Monitor
  4. Ключевое слово volatile, какие проблемы позволяет решить, MemoryBarrier, VolatileRead, VolatileWrite
  5. ManualResetEvent, AutoResetEvent, чем отличаются, по какому принципу выбираются потоки для пробуждения при переводе евента в сигнальное состояние
  6. Семафоры vs Мьютексы
  7. ReadWriteLockSlim и три режима работы
  8. Многопоточность и GUI
  9. Что такое Livelock
  10. Что такое Deadlock, какие существуют подходы для устранения дэдлоков: порядок захвата и освобождения ресурсов, создание метода для поиска подходящего ресурса по id, захват ресурса с таймаутом, подход с использованием WaitHandle.WaitAll
  11. Lock-free programming
  12. TLS, Dynamic and Static thread local storage

Комментариев нет:

Отправить комментарий