Блокированный ops против XXX :: atomic на Win32 - PullRequest
1 голос
/ 26 ноября 2010

Каковы преимущества и недостатки использования взаимосвязанных функций winapi вместо любой библиотеки, обеспечивающей элементарные операции на платформе Win32?

Переносимость не является проблемой.

Ответы [ 3 ]

4 голосов
/ 26 ноября 2010

Если переносимость не является проблемой, тогда вы в основном решаете, кому вы доверяете больше, чтобы получить это право. Библиотека обычно предназначена для обеспечения мобильности. В остальном ему сложно конкурировать с ОС, реализованной в течение 15 лет.

Проверьте этот поток , чтобы увидеть пример того, как очевидная реализация на самом деле не самая лучшая.

2 голосов
/ 26 ноября 2010

Функции Winapi с блокировкой работают на старых процессорах, даже если процессор не поддерживает заблокированные операции.386 и, возможно, 486, сегодня не проблема, если вы все еще не поддерживает Win9x и более старые NT.

0 голосов
/ 26 ноября 2010

Вероятно, это зависит от конкретной рассматриваемой атомарной библиотеки.

Хорошая библиотека с определенным внутренним интерфейсом, вероятно, в конечном итоге получит ту же реализацию пары инструкций ASM, чтобы выполнить инструкцию x86 lock и выполнить свою работу. И, предполагая, что сама библиотека переносима, впоследствии сделайте ваш код переносимым.

Наивная атомарная реализация может сделать что-то более тяжелое, например, использовать мьютекс для защиты нормальной переменной. Я не знаю ни одного, что делает - просто делает аргумент для аргумента.

Таким образом, учитывая ваши заявленные требования к переносимости, использование функций Win32 должно быть в порядке. В качестве альтернативы, продолжайте с Atomic-версией, но, возможно, посмотрите на фактическую реализацию.

...