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