блокированная операция с неподписанными данными - PullRequest
0 голосов
/ 01 июня 2009

Блокированные функции win32 обеспечивают механизм для атомарной работы с данными. Они должны быть поточно-ориентированными и многопроцессорными.

Что произойдет, если данные не выровнены? заблокированные операции все еще атомарны? Пример: увеличение целого числа, которое не выровнено.

Ty

1 Ответ

1 голос
/ 01 июня 2009

Если вы прочитали большинство функций Interlocked API, есть замечания, которые указывают что-то вроде:

"Переменная, на которую указывает параметр Addend, должна быть выровнена по 32-разрядной границе; в противном случае эта функция будет непредсказуемо работать в многопроцессорных системах x86 и любых системах, отличных от x86. См. _Aligned_malloc."

Например, см. Этот MSDN документ .

В основном это говорит о том, что вам нужно выровнять свои данные для правильных результатов, используя _aligned_malloc.

...