Вопрос

Если приложение предназначено для Windows Vista или более поздней версии, можем ли мы заменить все критические секции с Замки из ТРО?Поскольку критический раздел является взаимоисключающим, для использования он эквивалентен блокировкам SRW в эксклюзивном режиме, не так ли?Согласно MSDN, SRW оптимизирован как по скорости, так и по пространству.Есть ли какой-либо недостаток в этом?Я не уверен, как CS и SRW реализованы Microsoft внутри компании.

Спасибо!

Это было полезно?

Решение

Смотрите книгу Джо Даффи "Параллельное программирование в Windows", стр. 289.

Короткий ответ на ваш вопрос - "почти".Существует семантика с рекурсивно приобретенными значениями CRITICAL_SECTION, которые отличаются для SRWL.Если ваша программа воспользовалась этими характеристиками критических разделов Win32, то вы не сможете легко полностью переключиться на SRWL.Вы могли бы, однако, обернуть SRWL в оболочку, чтобы обеспечить CS-подобную семантику, но при этом есть куча тонкостей, поэтому вам лучше придерживаться CS, если вы зависите от такого поведения.

Статья Кенни Керра немного описывает, как оба варианта реализованы внутренне.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top