菜鸟教程小白 发表于 2022-12-12 20:26:32

ios - 设置 CoreData NSManagedObjectContext 线程优先级


                                            <p><p>至少从 iOS 9 开始,唯一不推荐用于不在主线程中运行的 Core Data 操作的线程并发类型是 NSPrivateQueueConcurrencyType。
我现在的问题是我想为此更改线程优先级,如下所示:</p>

<pre><code>...:(int) neededPriority {
_queue = dispatch_queue_create(&#34;Worker&#34;, DISPATCH_QUEUE_SERIAL);
dispatch_set_target_queue(_queue,
    dispatch_get_global_queue(neededPriority, 0));
</code></pre>

<p>有时我需要高优先级,有时需要低优先级。但是当我调用 <code></code> 时,我无法传递具有所需优先级的参数,上下文也没有任何属性来设置其线程优先级。<br/>
因此我的问题是:有没有办法将上下文队列放入某个线程优先级?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>NSManagedObjectContext</code> 实例被分配队列,而不是线程。与 <code>performBlock</code> 例程关联的队列可以在任意后台线程中运行,因此您不能为上下文分配一般优先级。</p>

<p>相反,您可以从 <code>performBlock</code>block 内部调用 <code>NSThread.setThreadPriority</code> 来更改处理该 block 的线程的优先级。</p>

<p>您可能希望在更改线程的优先级之前保存它,并在 block 的末尾重置它。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 设置 CoreData NSManagedObjectContext 线程优先级,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37684019/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37684019/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 设置 CoreData NSManagedObjectContext 线程优先级