私は、メインスレッドがいくつかの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
}
このタスクはメインスレッドで間違って取得できますか?または、メインスレッドがグローバルキューに対してロックされているため不可能ですか? ありがとうございました!
試しましたか?ところで、これはバックグラウンドタスクの概念を完全に無効にします。メインスレッドはできるだけフリーにしておきます。一度にメインスレッド上で実行できるのは1つだけです。あなたの「背景」のものの一部で動いている場合、ブロックされます。それはUIを更新しません、それは入力に応答しません、そして、あまりにも長い時間がかかると、アプリケーションは殺されるでしょう。 – Eiko
はい、私はそれを知っています。しかし、メインスレッドがアイドル状態の場合、global_queueからタスクを取ることができますか? –
これは実装上の大きなバグであり、起こることはないと思います。 – Eiko