gpt4 book ai didi

iphone - CocoaTouch中的线程池?

转载 作者:行者123 更新时间:2023-12-03 13:18:09 26 4
gpt4 key购买 nike

我有一组重复执行的任务,而不是每次需要执行此用户调用的任务时都创建一个新线程,而是要使用线程池。

在创建新线程的典型流程中,每次调用线程入口点时,您都​​必须设置一个自动释放池。根据http://www.mikeash.com/?page=pyblog/autorelease-is-fast.html,似乎此操作的性能可能微不足道,但我想做的是避免在我的应用程序执行期间与设置和拆除大量这些线程相关的成本。在其他框架/语言中,我刚刚检索了一个空闲线程并使其工作。完成工作后,线程将返回到池中。

我没有在iPhone SDK中看到任何线程池对象,只是NSThread。有什么好方法吗?

我如何设置线程:

// create thread using supplied entry point
[NSThread detachNewThreadSelector:@selector(myMethod)
toTarget:self
withObject:nil];

// thread entry-point
- (void)myMethod {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

*** code that should be run in the new thread goes here ***

[pool release];
}

最佳答案

您要执行此操作的方法是使用NSOperationQueue,它将保存要完成的任务队列,并根据需要并行执行(可配置)尽可能多的任务,每个任务都在后台线程上执行。我假设实现在给定操作完成后重新使用线程。

您可以将NSOperationQueue与NSOperations结合使用-您可以在其中进行同步调用(因为所有工作都在后台线程上完成),或者您仍然可以通过做更多的工作来进行异步调用(必须定义更多的方法)。

这是您可能会发现使用的tutorial

关于iphone - CocoaTouch中的线程池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com