Designing a dispatch queue
Design a MyQueue of your own without GCD. Submitting a closure with async(_:) should run it on a background thread pool, it should support serial and concurrent modes, and it should offer sync(_:) too. Can you walk me through the core data structures and how the synchronization works?