我在应用程序中使用GTMLogger
函数进行格式化日志记录。该应用程序创建实时posix线程(音频数据包处理)。有时我们需要从这些非Cocoa线程中执行日志记录。GTMLogger
创建了自动释放的对象,我想在函数中的GTMLogger
调用上放一个@autoreleasepool
块,从非Cocoa线程记录,但我担心这会影响性能。
我的问题是,我能以某种方式创建自动释放池并将其与当前的posix线程相关联吗?这样,每个线程只创建一次池,而不是每次调用日志函数时都创建一次?
提前感谢
在ARC下,使用@autoreleasepool
相当快。如果你关心那里的性能,我首先会担心避免不必要的日志调用,而不是自动释放池。
如果线程是长寿命的,则通常不能创建与"线程"关联的池。您需要定期排空池,如果您只是将整个线程主函数放在@autoreleasepool{}
或类似的东西中,就不会发生这种情况。
好吧,如果你不能控制线程的主函数,那么我想你能做的最好的事情就是把自动释放池放在库"调用"到你控制的代码中。