【问题标题】:Besides the main thread is there any other special thread?除了主线程还有其他特殊线程吗?
【发布时间】:2013-10-04 08:28:35
【问题描述】:

例如,如果我们使用 ABAddressBook,我们必须只使用一个线程。

好吧,我不希望那个线程成为主线程。

但是,所有其他线程都不是唯一的。例如,如何创建仅使用一个特殊线程的 NSOperationQueue?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    也许这会帮助你。 是的,除了邮件线程之外,您也可以在后台线程上执行操作。

    PerformSelectorInBackground:withObject: 是一个可能的解决方案。

    dispatch_queue_t workQ = dispatch_queue_create("bgWorkQ", 0);
    dispatch_async(workQ, ^{
        // This code is now running in a background thread.
        // Do all your loading here...
    
        });
    });
    dispatch_release(workQ) 
    

    这里是 NSOperation 队列示例教程的链接 enter link description here

    【讨论】:

      【解决方案2】:

      您可以在创建ABAddressBook 实例的同一队列中使用源自ABAddressBook 的通讯簿类型。它不必是主队列。如果要在队列之间传递引用,则必须将它们导入另一个在目标队列上创建的 ABAddressBook 实例。这是一个相对便宜的操作。

      【讨论】:

      • 你的意思是它不必是同一个线程?只是它在同一个队列中?
      • 队列在系统认为合适的情况下重用线程,但是分派的作业将在一个线程上运行。 ABAddressBook 不是线程安全的,因此您应该为您使用的每个线程创建 ABAddressBook 实例。
      • 什么?你是怎么从我的回答中推断出来的?
      猜你喜欢
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2021-05-18
      • 2020-09-21
      • 2015-09-30
      • 1970-01-01
      相关资源
      最近更新 更多