Необъяснимый образец - PullRequest
1 голос
/ 17 июня 2010

В настоящее время я читаю некоторую документацию, написанную другим, и я запутался.Многое из этого связано с многопоточной синхронизацией, которая была реализована в проекте, для которого написана эта документация.

В этом проекте этот программист реализовал несколько классов, которые управляют критическими разделами, которые используются повсюдуприложение.

Это просто набор классов, которые отслеживают, какой поток имеет какой критический раздел, и являются оберткой вокруг собственной структуры Win32 CRITICAL_SECTION.

Тогда есть классы, заканчивающиеся на -Visitкоторые фактически используются в приложении и будут проверять, был ли критический раздел введен в поток уже до его входа.

Этот программист называет это «шаблоном проектирования сбора данных», мне было интересно, существует ли такой шаблонсуществует и может ли это называться как-то иначе, чем то, что этот программист называет это, поскольку я нигде не могу найти шаблон под этим именем?

Я знаю, что не вдавался в подробности, но это примерно так же подробнокак я могу войтик.

1 Ответ

0 голосов
/ 17 июня 2010

Когда я реализовал такие классы, его назначение было следующим:

  • Обернуть примитивы O / S (например, критические секции)
  • Журнал их использования
  • Обнаружение смертельных объятий , отслеживание принадлежащих потоков, какие блокировки, и проверка на смертельные объятия перед получением каждой блокировки
  • Инструментарий для прогнозирования и, следовательно, предотвращения смертоносных объятий путем отслеживания последовательности, в которой потоки получали блокировки (например, lockA, а затем lockB), запоминания этого как «обычной последовательности», а затем предупреждения, если когда-либо получал блокировки в необычной последовательности (например, lockB с последующим lockA).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...