Controls
- Previous/Next: Navigate between steps
- Play/Stop: Automatically advance through steps
- Faster/Slower: Adjust animation playback speed
- Reset: Return to the first step
Keyboard Shortcuts
- Left Arrow: Previous step
- Right Arrow: Next step
- Up Arrow: Increase animation speed
- Down Arrow: Decrease animation speed
- Space: Play/Stop animation
- R: Reset to first step
Visualization Legend
The visualization shows threads and synchronization primitives (Mutex, RwLock, Condvar) as nodes, with different types of relationships between them:
Thread Nodes: Shown as circles labeled with the thread ID
Mutex: Mutual exclusion lock - only one thread can acquire it at a time
RwLock: Reader-writer lock - multiple readers or one writer
Condvar: Condition variable - allows threads to wait for conditions
Attempt: Thread tries to acquire a lock
Wait (Condvar): Thread is waiting on a condition
Notify: Condvar notified waiter(s)
Spawn: Thread/resource created
Exit: Thread/resource dropped
Deadlock: Circular wait detected
Wait-for Graph
The wait-for graph shows which threads are waiting for resources held by other threads.
When a cycle appears in this graph, a deadlock has been detected.