在posix线程上创建自动释放池

时间:2013-02-04 16:09:03

标签: ios objective-c pthreads nsthread nsautoreleasepool

我在我的应用程序中使用GTMLogger函数进行格式化日志记录。此应用程序创建实时posix线程(音频数据包处理)。有时我们需要从这些非Cocoa线程中执行日志记录。 GTMLogger创建了自动释放的对象,我想在函数中对@autoreleasepool调用放置GTMLogger块,这些块来自非Cocoa线程,但我担心它会影响性能。

我的问题是 - 我可以以某种方式创建自动释放池并将其与当前的posix线程关联,因此每个线程只创建一次池而不是每次调用日志函数时都会创建它吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

在ARC下,使用@autoreleasepool非常快。如果你担心那里的性能,我会首先担心避免不必要的日志记录调用,而不是自动释放池。

如果线程长寿,通常不能创建与“线程”关联的池。您需要定期排空池,如果您只是将整个线程主函数括在@autoreleasepool{}或类似的内容中,则不会发生这种情况。

答案 1 :(得分:0)

好吧,如果你无法控制线程的主要功能,那么我想你能做的最好的事情就是将自动释放池放在那个库“召唤”到你控制的代码中。