Есть ли менее ресурсоемкая альтернатива для TOmniMREW?

Мне нужна тонкая блокировка однократной многозаписной записи, похожая на TOmniMREW, но она будет менее ресурсоемкой в ​​случае конфликта.

TOmniREW использует только спин-блокировку, поэтому потоки будут стремительно расти до 100% загрузки ЦП, пока не получат блокировку.

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

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

Реализация Windows SRW использует аналогичную стратегию и бесполезна (правка: на самом деле она в 2-3 раза быстрее в некоторых случаях высокой конкуренции, но все еще имеет проблему с правкой 2: TOmniMREW будет использовать SRW, когда она будет доступна в будущей версии, так что скорость будет одинаковой).

2 ответа

Решение

На самом деле после более тщательного тестирования выясняется, что Windows SRW отказывается от процессора, для этого требуется чуть больше времени, чем я видел в своем тесте "Критические разделы".

Так что Windows SRW - это ответ.

Вы читали эту статью: Тонкий Ридер / Писатель Замки Скалы? Он также содержит ссылку на простой эталонный проект нескольких альтернатив

Другие вопросы по тегам