andrew4582

SpinLockWrapper

Feb 22nd, 2011
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.89 KB | None | 0 0
  1. public class SpinLockWrapper:IDisposable {
  2.  
  3.         public static SpinLockWrapper Create(SpinLock spin,bool useMemoryBarrier = false) {
  4.             return new SpinLockWrapper(spin,useMemoryBarrier);
  5.         }
  6.  
  7.         readonly SpinLock _spinlock;
  8.         bool _lockTaken = false;
  9.         bool _useMemoryBarrier;
  10.  
  11.         public SpinLock SpinLock {
  12.             get {
  13.                 return _spinlock;
  14.             }
  15.         }
  16.         public SpinLockWrapper(SpinLock spin,bool useMemoryBarrier = false) {
  17.             _spinlock = spin;
  18.             _useMemoryBarrier = useMemoryBarrier;
  19.             _spinlock.Enter(ref _lockTaken);
  20.         }
  21.         public void Dispose() {
  22.             if(_lockTaken)
  23.                 _spinlock.Exit(_useMemoryBarrier);
  24.  
  25.             //Debug.WriteLine("SpinLocker->Dispose() _lockTaken: {0} _useMemoryBarrier: {1}",_lockTaken,_useMemoryBarrier);
  26.         }
  27.     }
Add Comment
Please, Sign In to add comment