Аноним

Синхронизация без ожидания: различия между версиями

Материал из WEGA
Строка 71: Строка 71:


Одним из вариантов является встраивание программистом вызовов менеджера конкуренции вручную, однако этот подход довольно утомителен и приводит к появлению ошибок. Геррауи и др. [ ] предложили версию подхода, в которой менеджер конкуренции рассматривается как детектор ошибок. Авторы также исследовали вопрос о том, какие гарантии прогресса и какими детекторами ошибок могут быть обеспечены.
Одним из вариантов является встраивание программистом вызовов менеджера конкуренции вручную, однако этот подход довольно утомителен и приводит к появлению ошибок. Геррауи и др. [ ] предложили версию подхода, в которой менеджер конкуренции рассматривается как детектор ошибок. Авторы также исследовали вопрос о том, какие гарантии прогресса и какими детекторами ошибок могут быть обеспечены.
Аттия и др. [4], а также Агилера и др. [2] предложили изменить семантику операций над структурой данных таким образом, чтобы они могли в случае наличия конкуренции возвращать специальное значение, в результате чего управление конкуренцией можно было бы осуществлять за рамками структуры данных. Однако этот подход по-прежнему возлагает на программиста обязанность следить за тем, чтобы эти специальные значения всегда возвращались операцией, которая не может завершиться из-за наличия конкуренции, и чтобы возвращалось корректное специальное значение, соответствующее предписанной семантике.
Еще одним вариантом является использование поддержки системы, гарантирующей, что вызовы менеджера конкуренции выполняются достаточно часто для обеспечения прогресса. Эта поддержка может выражаться в форме скомпилированных вызовов, поддержки во время выполнения, сигналов, отправляемых по истечении установленного таймера, и других аналогичных способов. Однако все эти подходы имеют недостатки – такие как невозможность применения в универсальных средах, непереносимость и т. п.
Поскольку задача разработки и проверки непосредственных реализаций совместно используемых структур данных без препятствий по-прежнему остается актуальной, а различные подходы по встраиванию механизмов контроля конкуренции не лишены недостатков, использование таких инструментов, как STM со встроенными интерфейсами управления конкуренцией, оказывается самым удобным способом построения неблокирующих структур данных.
== Применение ==
4551

правка