c# - cached variables using lock and volatile -



c# - cached variables using lock and volatile -

does lock forcefulness variables written straight memory instead of beëing cached volatile does? in this question orion edwards states using locks improve using volatile, if public variable accessed within lock, , lock, mean never cached outside of lock statement?

private readonly object locker = new object(); private bool? _var = null; public bool? var { { lock (locker) { //possibly variable _var in cache memory somewhere homecoming this._var; //force _var memory } } set { lock (locker) { //possibly variable _var in cache memory somewhere this._var = value; //force _var memory } } }

a lock introduces acquire-fence before first instruction, , release-fence after lastly instruction.

the acquire-fence prevents instructions within lock beingness moved backwards in time , above lock (i.e., "cached"). (also, notice how doesn't prevent instructions above lock moved within lock).

this specification guarantees. mechanism used accomplish (e.g., preventing processor using register , writing/reading straight to/from memory, cache-invalidation, etc) isn't relevant.

c# locking volatile

Comments

Popular posts from this blog

php - Android app custom user registration and login with cookie using facebook sdk -

django - Access session in user model .save() -

php - .htaccess Multiple Rewrite Rules / Prioritizing -