Re[7]: C/C++ file/process/thread api l/w framework
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.03.08 07:36
Оценка:
Здравствуйте, Andrew S, Вы писали:

AS>>>А то, что нормальных interlocked операций там нет? Есть какие-то идиотические Atomic переменные, которые даже не умеют InterlockedExchange, не говоря уж о большем...


E>> В коде ACE_Atomic_Op для long-а InterlockedExchange как раз используется.


AS>Как атомарно получить предыдущее значение переменной в этом случае? Ведь interlocked функции как раз и нужны для этого. В общем, кг/ам там...


Если у вас есть a и b, которые нужно обменять, то:
typedef ACE_Atomic_Op< ACE_Null_Mutex, long > AtomicLong;
AtomicLong a, b;
std::swap(a, b);


А вообще можно в ACE подкинуть реализацию метода swap для Atomic_Op, ведь это же OpenSource как-никак.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.