I think that DISPATCH_QUEUE_CONCURRENT
will work random, but it seem to work in order.
Is there's something wrong with my code?
code
let concurrentDispatchQueue = dispatch_queue_create("serialDispatchQueue", DISPATCH_QUEUE_CONCURRENT)
func foo(name: String, queue: dispatch_queue_t) {
for i in 1...10 {
dispatch_sync(queue) { () -> Void in
let r = Double(random() % 10)
NSThread.sleepForTimeInterval(0.02 * r)
print("\(name) \(i)")
}
}
}
foo("concurrent", queue: concurrentDispatchQueue)
output
concurrent 1 concurrent 2 concurrent 3 concurrent 4 concurrent 5 concurrent 6 concurrent 7 concurrent 8 concurrent 9 concurrent 10