let serial1 = DispatchQueue(label: "com.besher.serial1") let serial2 = DispatchQueue(label: "com.besher.serial2") serial1.sync { // <---- we changed this to 'sync' for _ in 0..<5 { print("🔵") } } // we don't get here until first loop terminates serial2.async { for _ in 0..<5 { print("🔴") } }