Здравствуйте, ononim, Вы писали:
R>>потому что xchg умеет только r/rm, r или наоборот r, r/rm
R>>соотв-но инструкция lock xchg [eax], [eax] не компилируется:
R>>error: invalid combination of opcode and operands
O>не ну емое.. это как раз таки фигня вопрос:
O>O>for (;;)
O>{
O>long l = *p;
O>if (_InterlockedCompareExchange(p, l, l)==l) break;
O>}
O>
ну да, ну да
а после присвоения l поток вытеснили и в *p другое значение кто-нть записал
InterlockedOr(p, 0) тогда уж лучше