iOS GCD 性能如何?
How about iOS GCD Performance?
我每秒重复调用一个方法(名为 A)大约 3000 次,在 A 方法中,我分配了一些资源并做了一些事情。
如果我直接在A方法中分配和做一些事情,它工作得很好。但是如果我在 GCD 创建的自定义串行线程中分配并执行某些操作,比如 blow,它就会崩溃
NSString *queueName = [NSString stringWithFormat:@"com.realank.thread"];
dispatch_queue_t serialQueue = dispatch_queue_create([queueName cStringUsingEncoding:NSUTF8StringEncoding], NULL);
dispatch_async(initMidMenu, ^{
// alloc and do something
});
所以我认为它为什么会崩溃是因为GCD线程的性能限制,有人知道吗?非常感谢~
您在调用 dispatch_queue_create
时正在分配一个新的调度队列。您必须在之后使用 Apple 提到的 dispatch_release
发布它。否则你会 运行 内存不足!!!
https://developer.apple.com/reference/dispatch/1453030-dispatch_queue_create#return-value
可以通过dispatch_queue_create
方法的return值获取新创建队列的引用,之后再释放。
以下是 Apple 在其文档中提到的方式。
When your application no longer needs the dispatch queue, it should
release it with the dispatch_release function.
我每秒重复调用一个方法(名为 A)大约 3000 次,在 A 方法中,我分配了一些资源并做了一些事情。
如果我直接在A方法中分配和做一些事情,它工作得很好。但是如果我在 GCD 创建的自定义串行线程中分配并执行某些操作,比如 blow,它就会崩溃
NSString *queueName = [NSString stringWithFormat:@"com.realank.thread"];
dispatch_queue_t serialQueue = dispatch_queue_create([queueName cStringUsingEncoding:NSUTF8StringEncoding], NULL);
dispatch_async(initMidMenu, ^{
// alloc and do something
});
所以我认为它为什么会崩溃是因为GCD线程的性能限制,有人知道吗?非常感谢~
您在调用 dispatch_queue_create
时正在分配一个新的调度队列。您必须在之后使用 Apple 提到的 dispatch_release
发布它。否则你会 运行 内存不足!!!
https://developer.apple.com/reference/dispatch/1453030-dispatch_queue_create#return-value
可以通过dispatch_queue_create
方法的return值获取新创建队列的引用,之后再释放。
以下是 Apple 在其文档中提到的方式。
When your application no longer needs the dispatch queue, it should release it with the dispatch_release function.