Есть ли менее ресурсоемкая альтернатива для TOmniMREW?
Мне нужна тонкая блокировка однократной многозаписной записи, похожая на TOmniMREW, но она будет менее ресурсоемкой в случае конфликта.
TOmniREW использует только спин-блокировку, поэтому потоки будут стремительно расти до 100% загрузки ЦП, пока не получат блокировку.
В настоящее время я использую критическую секцию, и, хотя она имеет менее эффективное поведение (у меня больше читателей, чем писателей), в случае конфликтных потоков время процессора сокращается.
Конфликт происходит очень редко в моем случае, как правило, когда писатель запускает более сложную (длительную) операцию, но когда это происходит, спин-блокировки имеют стремительный рост использования ЦП.
Реализация Windows SRW использует аналогичную стратегию и бесполезна (правка: на самом деле она в 2-3 раза быстрее в некоторых случаях высокой конкуренции, но все еще имеет проблему с правкой 2: TOmniMREW будет использовать SRW, когда она будет доступна в будущей версии, так что скорость будет одинаковой).
2 ответа
На самом деле после более тщательного тестирования выясняется, что Windows SRW отказывается от процессора, для этого требуется чуть больше времени, чем я видел в своем тесте "Критические разделы".
Так что Windows SRW - это ответ.
Вы читали эту статью: Тонкий Ридер / Писатель Замки Скалы? Он также содержит ссылку на простой эталонный проект нескольких альтернатив