我从一个购买的媒体流SDK Library得到了C++回调,它在内部创建了几个线程。
具体地说,当库想要记录消息时,我会收到回调。有时我会在一些NSThread的上下文中被调用,其中有一个自动释放池,但有时我会从其他没有自动释放池的线程中调用。一些调用线程是实时线程(音频抓取等)所以性能很重要。
如何区分在NSThread (应用程序的主线程或其他NSThreads)和由SDK库创建的内部“仅C++”线程中被调用的情况?
Apple文档中没有任何内容告诉我当我使用
NSThread currentThread
当我处于另一种线程的上下文中时,以及当我在NSThread上调用pthreadSelf()或类似的API时会发生什么。
此外,如果可能的话,我想听到一些关于将自动释放池附加到这些内部线程的想法,以及时不时地将它们排出的想法。
谢谢。
发布于 2013-02-05 14:01:15
NSThread是pthread之上的包装器,因此如果线程是使用NSThread、pthread、GCD或C++ threading API创建的,pthread_self将始终返回有效的线程对象!
[NSThread currentThread]还将返回一个NSThread对象,即使线程不是使用NSThread API创建的,并且使用公共API也无法判断返回的对象是代理还是“实际”NSThread。
您可以使用@autoreleasepool指令生成一个轻量级的自动释放池。
https://stackoverflow.com/questions/14701048
复制相似问题