如果我說有時可能發生主線程可能忙於某些global_queue任務?是否有可能在全局隊列上使用dispatch_async運行的塊在主線程上執行?
例如。我有一些任務要執行,我使用以下語句之一:
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
// task 1
}
// or
dispatch_async(dispatch_get_global_queue(QOS_CLASS_UTILITY, 0)) {
// task 2
}
是否有可能在主線程中意外獲取此任務?或者這是不可能的,因爲主線程鎖定全局隊列? 謝謝!
你試過了嗎?順便說一句,這完全消除了後臺任務的概念。保持主線程儘可能自由。一次只能在主線程上運行一件事情。如果它正在處理某些「背景」內容,則會被阻止;它不會更新用戶界面,它不會響應輸入,如果時間過長,應用程序將會被殺死。 – Eiko
是的,我知道。但是,如果主線程閒置,它可以從global_queue獲取任務嗎? –
我會說這將是一個實施過程中的巨大錯誤,不會發生。 – Eiko