首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断当前线程是否被创建为NSThread?

如何判断当前线程是否被创建为NSThread?
EN

Stack Overflow用户
提问于 2013-02-05 13:55:47
回答 1查看 596关注 0票数 3

我从一个购买的媒体流SDK Library得到了C++回调,它在内部创建了几个线程。

具体地说,当库想要记录消息时,我会收到回调。有时我会在一些NSThread的上下文中被调用,其中有一个自动释放池,但有时我会从其他没有自动释放池的线程中调用。一些调用线程是实时线程(音频抓取等)所以性能很重要。

如何区分在NSThread (应用程序的主线程或其他NSThreads)和由SDK库创建的内部“仅C++”线程中被调用的情况?

Apple文档中没有任何内容告诉我当我使用

NSThread currentThread

当我处于另一种线程的上下文中时,以及当我在NSThread上调用pthreadSelf()或类似的API时会发生什么。

此外,如果可能的话,我想听到一些关于将自动释放池附加到这些内部线程的想法,以及时不时地将它们排出的想法。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-02-05 14:01:15

NSThread是pthread之上的包装器,因此如果线程是使用NSThread、pthread、GCD或C++ threading API创建的,pthread_self将始终返回有效的线程对象!

[NSThread currentThread]还将返回一个NSThread对象,即使线程不是使用NSThread API创建的,并且使用公共API也无法判断返回的对象是代理还是“实际”NSThread

您可以使用@autoreleasepool指令生成一个轻量级的自动释放池。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14701048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档