【问题标题】:How many NSOperationQueue we can create in iOS?我们可以在 iOS 中创建多少个 NSOperationQueue?
【发布时间】:2018-07-20 09:37:40
【问题描述】:

在面试中总是被问到我们在 NSOperationQueue 中可以同时运行 ios iPhone 编程的最大线程数是多少?但是在 iOS 中创建 NSOperationQueue 有什么限制吗?

【问题讨论】:

  • 我认为NSOperationQueueOperationQueue 对可以创建的实例数量没有限制。它所做的只是根据当前系统或硬件中的 CPU 计数与块(闭包)一起分派线程。如果有/有空闲核心/核心,当有足够多的线程排队并且所有核心都忙时,将会有并行调度和串行。您可以与性能密集型应用程序相关联,例如游戏应用程序,其中可能会排队数万到数千个线程以及一些由其他应用程序和 iOS 本身创建的线程。
  • 如果我没记错,那么你只能有一个线程作为主线程。而后台线程没有限制。

标签: ios nsoperationqueue


【解决方案1】:

我正在回答您问题中棘手的部分。

在 iOS 中创建 NSOperationQueue 有什么限制吗?

逻辑上是有限制的,但这取决于设备内存。

NSOperationQueue 是一个类,因此如果您创建一个对象,它将持有一些内存,如果您不释放该对象一次,它将耗尽内存,否则您的应用程序将被操作系统杀死。

试试这个,它给了我 32 个字节。

#import <malloc/malloc.h>
.....
NSOperationQueue *test = [[NSOperationQueue alloc] init];
NSLog(@"Size of %@: %zd bytes", NSStringFromClass([NSOperationQueue class]), malloc_size((__bridge const void *) test));

现在每个不同型号的 iOS 设备都有不同的内存限制供应用程序访问。因此,如果您的设备对某个应用有 100mb 限制。 现在您知道可以创建多少个 NSOperationQueue。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-14
    • 2011-11-15
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多