Существует существующий вопрос относительно различия между разделом Mutex и Critical, но это не имеет дело с Блокировками также.
Таким образом, я хочу знать, могут ли Критические разделы использоваться для синхронизации потока между процессами.
Также, что предназначено по сообщенным состояниям и несообщенным состояниям
В Windows критические разделы (в основном) реализованы в пользовательском режиме, а мьютекс переключит контекст в режим ядра (что медленно). Если поток завершается, пока владеет мьютексом, считается, что мьютекс брошен. Состояние мьютекса устанавливается как «сигнализировано», и следующий ожидающий поток получает право владения. В той же ситуации с критическим разделом все остальные потоки останутся заблокированными. Критические разделы не могут быть названы, поэтому вы не можете использовать их для синхронизации нескольких процессов.
Критические секции не являются объектами ядра. Они не идентифицируются ни с каким Handle. Они могут использоваться только для синхронизации потоков, принадлежащих одному процессу. Они не могут быть использованы для синхронизации между процессами.
CSingleLock (я предполагаю, что в данном контексте вы называете его блокировкой) - это класс-обертка, использующий концепцию RAII. Он помогает вам получить объект синхронизации потоков (в его конструкторе) и вызвать API блокировки и разблокировки простым способом. (скрывая все внутренние детали того, какие объекты синхронизации он использует).
CSingleLock, когда используется с критическими секциями, не может быть использован между процессами. Для этой цели можно использовать Mutex.
Когда поток приобретает Mutex и никакие другие потоки не могут приобрести Mutex, состояние Mutex считается несигнатурным. Если мьютекс доступен и ни один поток не приобрел его, то он находится в состоянии Signeled.
1) Критический раздел - это мост между пользовательскими и заблокированными операциями. Он использует операции с обменом inetrlocked для блокировки и разблокировки ваших потоков. Работает быстрее мьютексов.
2) Мьютекс - это ядерный объект. Работает не быстро, но имеет ряд преимуществ. Во-первых, именованные мьютексы могут использоваться во всех процессах. Во-вторых, если поток завершен, то мьютекс, заблокированный этим потоком, разблокируется.
CriticalSections в процессе. Именованные мьютексы могут использоваться между процессами
Блокировка - это общий термин, и поэтому я не знаю, какую платформу вы имеете в виду. Например, в C# примитив блокировки - это критическая секция.