C++ (Qt)void MyAtomicAdd( QAtomicInt & count, int delta ){ while (true) { int old = count; if (count.testAnSetAcquire(old, old + delta)) break; }}
C++ (Qt)void MyAtomicAdd( QAtomicInt & count, int delta ){ while (true) { int old = count; if (count.testAndSetAcquire(old, old + delta)) break; }}
C++ (Qt)int countValue = count;
C++ (Qt)int countValue = count.fetchAndAdd( 0 );
C++ (Qt)if (count == 0) printf("count = %d\n", count);
mov [DestOfTypeInt], eax ; исходное значение берется из регистра
mov [DestOfTypeInt], ax ; исходное значение берется из регистра (16 бит) mov [DestOfTypeInt+2], dx ; исходное значение берется из регистра (16 бит)
// progress - внешняя переменная ... for (progress = 0; progress < 100; ++progress) { someOperation(); // длится, к примеру, 1 секунду // что должно побудить компилятор на каждой итерации сохранять progress в памяти? } ...