В C ++ 03 такого нет, но вы можете использовать особенности вашего поставщика. Например, вы можете использовать InterlockedOr
в Windows. В C ++ 0x вы можете использовать atomic_fetch_or
.
Обратите внимание, что атомарные операции также требуют блокировки, хотя на аппаратном уровне это все еще дорого.