gpt4 book ai didi

ios - 如何判断当前线程是否创建为 NSThread?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:30 27 4
gpt4 key购买 nike

我从购买的媒体流 SDK 库中获得 C++ 回调,它在内部创建了多个线程。

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

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

Apple 的文档中没有任何内容告诉我使用时会发生什么

[NSThread 当前线程]

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

此外,我想听听有关将自动释放池附加到这些内部线程(如果可能)以及不时耗尽它们的想法。

谢谢。

最佳答案

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

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

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

关于ios - 如何判断当前线程是否创建为 NSThread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14701048/

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