Как можно протестировать и настроить поведение кода без специальной аппаратной инструкции?

StackOverflow https://stackoverflow.com/questions/107184

Вопрос

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

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

Решение

Вам не нужны инструкции по тестированию и установке, чтобы получить блокировку взаимного исключения, если вы об этом спрашиваете.Дейкстра описал первый известный мне алгоритм взаимного исключения в 1965 году.Статья называлась «Решение проблемы управления параллельным программированием», найдите ближайшую к вам копию в Google.Исходный алгоритм вообще не требовал специальной аппаратной поддержки, но наличие атомарных инструкций в ЦП значительно повышает производительность.

Тестирование и установка, атомарная замена и привязка к нагрузке + условие сохранения — все это общие примитивы, предоставляемые процессорами.Все это можно использовать для реализации взаимного исключения, которое затем можно использовать для реализации любой семантики блокировки, которую вы хотите.

Другие советы

Если вам нужен перекрестный способ сделать это и вы используете gcc, вы можете использовать атомарные встроенные функции gcc:

http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html

Их вызов приведет к созданию конкретной машинной инструкции для текущей архитектуры сборки.На тех, которые их не поддерживают, компиляция завершится неудачно.(Я думаю...)

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