[pso] atomic_read

Cosmin Ratiu cosminratiu at gmail.com
Wed Apr 21 10:42:13 EEST 2010


2010/4/21 Alin Popescu <alinpopescu at live.com>:
> Urmatoarea instructiune este atomica?
> atomic_read(&pfifo->fill) == BUFFER_SIZE
>
> Din cate stiu, se translateaza in doua instructiuni asm.
> mov EAX, pfifo->fill.counter
> cmp EAX, BUFFER_SIZE
>
> Exista vreo sansa sa execut comparatia atomic fara spinlock si fara sa
> modific valoarea lui fill?

atomic_read iti garanteaza ca ce citesti din memorie nu este o valoare
pe jumatate modificata. Deci o sa citesti ori valoarea noua, ori
valoarea veche.
Comparatia o faci intre un registru si o constanta, asa ca nu mai
conteaza dpdv al sincronizarii.

Cosmin.


More information about the pso mailing list