2

这是我在调试应用程序时观察到的。我的应用程序本质上是一个单线程应用程序。

应用程序最初只有一个线程。

线程 1:队列:com.apple.main-thread。

在我的应用程序中,当以下代码被点击时

 NSScreen * mainscreen = [NSScreen mainScreen];

然后创建以下线程。

  1. 线程 3:队列:com.apple.libdispatch-manager
  2. 线程 5
  3. 线程 6
  4. 线程 7

线程 3 的调用栈是 kevent64 _dispatch_mgr_thread

线程 5、6、7 的调用栈为 __workq_kernreturn start_wqthread

为什么【NSScreen mainScreen】上突然出现线程3、5、6、7?

加载应用程序后,当我中断它时,它显示一个 Thread 16 CVDisplayLink。什么是 CVDisplayLink?

我正在使用 Mac OS X Mavericks Preview 和 Xcode 5 进行调试。

4

1 回答 1

3

Mac 开发人员库中所述:

核心视频显示链接提供了一个单独的高优先级线程,以在给定显示需要每一帧时通知您的应用程序。您可以使用显示链接轻松地与显示的刷新率同步。显示链接 API 在内部使用 Core Foundation 类系统来提供引用计数行为和其他有用的属性。

于 2013-07-08T09:35:34.120 回答