2008-09-20 7 views
-1

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

ответ

3

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

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

+0

http://www.dis.uniroma1.it/~baldoni/p569-dijkstra.pdf – Chris 2008-09-20 06:38:41

0

Если вы хотите кросс-арочный способ сделать это, и с помощью GCC, то вы можете использовать атомные внутренние команды ССЗ:

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

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