Re[4]: быстро и безопасно проверить что указатель writable
От: ononim  
Дата: 30.08.12 17:24
Оценка:
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>>

R>ну да, ну да
R>а после присвоения l поток вытеснили и в *p другое значение кто-нть записал
R>InterlockedOr(p, 0) тогда уж лучше
Ну если ктото другое значение записал _InterlockedCompareExchange нифига не запишет и вернет это самое другое значение, которое будет отличаться от l и цикл пойдет на следующую итерацию-попытку.
InterlockedOr тоже интересно, но вопрос — можно ли обойтись протестировать записывабельность адреса без сисколла, lock'а и ваще самой записи?
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.