├── .gitattributes ├── .gitignore ├── README.md ├── TheArtOFMultiprocessorProgramming.sln └── TheArtOFMultiprocessorProgramming ├── Lock ├── ArrayLock.java ├── Backoff.java ├── BackoffLock.java ├── CLHLock.java ├── CompositeFastPathLock.java ├── CompositeLock.java ├── MCSLock.java ├── TASLock.java ├── TTASLock.java └── TimeOutLock.java ├── MonitorsAndBlockingSynchronization ├── FifoReadWriteLock.java ├── Semaphore.java ├── SimpleReadWriteLock.java └── SimpleReentrantLock.java ├── TheArtOFMultiprocessorProgramming.vcxproj ├── TheArtOFMultiprocessorProgramming.vcxproj.filters ├── Unsafe.java ├── concurrent └── atomic │ ├── AtomicBoolean.java │ ├── AtomicInteger.java │ ├── AtomicIntegerArray.java │ ├── AtomicIntegerFieldUpdater.java │ ├── AtomicLong.java │ ├── AtomicLongArray.java │ ├── AtomicLongFieldUpdater.java │ ├── AtomicMarkableReference.java │ ├── AtomicReference.java │ ├── AtomicReferenceArray.java │ ├── AtomicReferenceFieldUpdater.java │ ├── AtomicStampedReference.java │ └── package-info.java ├── locks ├── AbstractOwnableSynchronizer.java ├── AbstractQueuedLongSynchronizer.java ├── AbstractQueuedSynchronizer.java ├── Condition.java ├── Lock.java ├── LockSupport.java ├── ReadWriteLock.java ├── ReentrantLock.java ├── ReentrantReadWriteLock.java └── package-info.java ├── park.cpp ├── park.hpp ├── thread.cpp ├── thread.hpp └── unsafe.cpp /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/.gitattributes -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/README.md -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming.sln: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming.sln -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/ArrayLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/ArrayLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/Backoff.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/Backoff.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/BackoffLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/BackoffLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/CLHLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/CLHLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/CompositeFastPathLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/CompositeFastPathLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/CompositeLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/CompositeLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/MCSLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/MCSLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/TASLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/TASLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/TTASLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/TTASLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Lock/TimeOutLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Lock/TimeOutLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/FifoReadWriteLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/FifoReadWriteLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/Semaphore.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/Semaphore.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/SimpleReadWriteLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/SimpleReadWriteLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/SimpleReentrantLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/MonitorsAndBlockingSynchronization/SimpleReentrantLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/TheArtOFMultiprocessorProgramming.vcxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/TheArtOFMultiprocessorProgramming.vcxproj -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/TheArtOFMultiprocessorProgramming.vcxproj.filters: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/TheArtOFMultiprocessorProgramming.vcxproj.filters -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/Unsafe.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/Unsafe.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicBoolean.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicBoolean.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicInteger.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicInteger.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicIntegerArray.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicIntegerArray.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicIntegerFieldUpdater.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicIntegerFieldUpdater.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicLong.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicLong.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicLongArray.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicLongArray.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicLongFieldUpdater.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicLongFieldUpdater.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicMarkableReference.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicMarkableReference.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicReference.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicReference.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicReferenceArray.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicReferenceArray.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicReferenceFieldUpdater.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicReferenceFieldUpdater.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicStampedReference.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/AtomicStampedReference.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/concurrent/atomic/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/concurrent/atomic/package-info.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/AbstractOwnableSynchronizer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/AbstractOwnableSynchronizer.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/AbstractQueuedLongSynchronizer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/AbstractQueuedLongSynchronizer.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/AbstractQueuedSynchronizer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/AbstractQueuedSynchronizer.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/Condition.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/Condition.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/Lock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/Lock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/LockSupport.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/LockSupport.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/ReadWriteLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/ReadWriteLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/ReentrantLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/ReentrantLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/ReentrantReadWriteLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/ReentrantReadWriteLock.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/locks/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/locks/package-info.java -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/park.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/park.cpp -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/park.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/park.hpp -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/thread.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/thread.cpp -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/thread.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/thread.hpp -------------------------------------------------------------------------------- /TheArtOFMultiprocessorProgramming/unsafe.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouxiaohang/TheArtOFMultiprocessorProgramming/HEAD/TheArtOFMultiprocessorProgramming/unsafe.cpp --------------------------------------------------------------------------------