I try to understand GCD and wrote this code to find out run priority:
override func viewDidLoad() {
super.viewDidLoad()
fetchImage()
print(1)
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) {
print(2)
}
dispatch_async(dispatch_get_main_queue()) {
print(3)
}
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) {
print(5)
}
}
I got next result in the console:
1
2
5
3
So the question is:
Part 1: Why 3 is after 5 (main_queue has highest priority?)
Part 2: And why 2 is higher that 3 and 5 as well?
Thank you guys!
Bear in mind: this is multi-threading, on a multi-core device, writing output to a log that you don't know the thread safety and internal management of...
That said:
QOS_CLASS_USER_INTERACTIVE
~= main thread priority)Note, I say ~= because I haven't checked the exact values and it may differ slightly though I expect the priority values to match, otherwise 'interactive' wouldn't mean much...