<==== Simulate 8 CPUs =====> AcquireSpinLock - Main AcquireSpinLock - Main - Acquired CPU[4] - AcquireSpinLock CPU[7] - AcquireSpinLock CPU[1] - AcquireSpinLock CPU[0] - AcquireSpinLock CPU[3] - AcquireSpinLock CPU[5] - AcquireSpinLock CPU[2] - AcquireSpinLock CPU[6] - AcquireSpinLock x == exit x Get x -> exit ReleaseSpinLock - Main ReleaseSpinLock - Main - Released CPU[4] - AcquireSpinLock -> Acquired. Waiting for Threads CPU[4] - Waiting for CloseEvent CPU[4] - Received CloseEvent CPU[4] - ReleaseSpinLock CPU[4] - ReleaseSpinLock -> Released. CPU[1] - AcquireSpinLock -> Acquired. CPU[1] - Waiting for CloseEvent CPU[1] - Received CloseEvent CPU[1] - ReleaseSpinLock CPU[1] - ReleaseSpinLock -> Released. CPU[3] - AcquireSpinLock -> Acquired. CPU[3] - Waiting for CloseEvent CPU[3] - Received CloseEvent CPU[3] - ReleaseSpinLock CPU[3] - ReleaseSpinLock -> Released. CPU[2] - AcquireSpinLock -> Acquired. CPU[2] - Waiting for CloseEvent CPU[2] - Received CloseEvent CPU[2] - ReleaseSpinLock CPU[2] - ReleaseSpinLock -> Released. CPU[7] - AcquireSpinLock -> Acquired. CPU[7] - Waiting for CloseEvent CPU[7] - Received CloseEvent CPU[7] - ReleaseSpinLock CPU[7] - ReleaseSpinLock -> Released. CPU[5] - AcquireSpinLock -> Acquired. CPU[5] - Waiting for CloseEvent CPU[5] - Received CloseEvent CPU[5] - ReleaseSpinLock CPU[5] - ReleaseSpinLock -> Released. CPU[0] - AcquireSpinLock -> Acquired. CPU[0] - Waiting for CloseEvent CPU[0] - Received CloseEvent CPU[0] - ReleaseSpinLock CPU[0] - ReleaseSpinLock -> Released. CPU[6] - AcquireSpinLock -> Acquired. CPU[6] - Waiting for CloseEvent CPU[6] - Received CloseEvent CPU[6] - ReleaseSpinLock CPU[6] - ReleaseSpinLock -> Released. END