Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SpinLockWrapper:IDisposable {
- public static SpinLockWrapper Create(SpinLock spin,bool useMemoryBarrier = false) {
- return new SpinLockWrapper(spin,useMemoryBarrier);
- }
- readonly SpinLock _spinlock;
- bool _lockTaken = false;
- bool _useMemoryBarrier;
- public SpinLock SpinLock {
- get {
- return _spinlock;
- }
- }
- public SpinLockWrapper(SpinLock spin,bool useMemoryBarrier = false) {
- _spinlock = spin;
- _useMemoryBarrier = useMemoryBarrier;
- _spinlock.Enter(ref _lockTaken);
- }
- public void Dispose() {
- if(_lockTaken)
- _spinlock.Exit(_useMemoryBarrier);
- //Debug.WriteLine("SpinLocker->Dispose() _lockTaken: {0} _useMemoryBarrier: {1}",_lockTaken,_useMemoryBarrier);
- }
- }
Add Comment
Please, Sign In to add comment