Различие между “критическим разделом”, “критический регион” и “принужденным регионом выполнения”

Извините, просто что-то пошло не так в кеше. Просто аннулируйте кеш и перезапустите, и тогда он будет работать нормально. Проблема в том, что я до сих пор не знаю, почему это не удалось с самого начала.

14
задан davejal 4 January 2016 в 01:40
поделиться

4 ответа

Просто мое понимание этих понятий:

Критический раздел - как вы сказали.

Критический region - Это похоже на широкоформатную версию «не позволяйте исключениям выходить из потока».

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

Существуют рекомендации для «нормального программирования», которые выглядят примерно так: при переопределении Equals или неявного оператора вы не должны бросать (что-либо).

5
ответ дан 1 December 2019 в 13:59
поделиться

В соответствии с параллельным программированием в Windows Джо Даффи определения для критического раздела / области следующие:

Критический section : В Win32 критическая секция представляет собой простую структуру данных ( CRITICAL_SECTION ), используемую для построения критических областей.

Критическая область : это кодовая область, которая имеет взаимное исключение (это, по-видимому, то, что вы называете критической секцией в приведенном выше).

2
ответ дан 1 December 2019 в 13:59
поделиться

В Windows я до сих пор работал только с критическим разделом . По моему опыту, это механизм блокировки потоков в пользовательском пространстве Win32. Это означает, что его можно использовать в одном процессе для блокировки ресурсов, совместно используемых несколькими потоками. Это не для всей системы, а только для всего процесса. Примером того, чем он не является, является блокировка пространства ядра (например, мьютексы).

Например, boost :: thread использует критические разделы в своей реализации Win32 - или, по крайней мере, когда я его использовал - и использует мьютексы в Linux через pthreads.

0
ответ дан 1 December 2019 в 13:59
поделиться

Любой участок кода, который должен завершаться каждым процессом, который его запускает, прежде чем другой процесс сможет войти в него, называется критической областью.

0
ответ дан 1 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: