调用[NSScreen mainScreen]时的额外线程

时间:2013-07-08 09:17:14

标签: objective-c macos cocoa

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

应用程序最初只有一个帖子。

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

在我的应用程序中,当遇到以下代码时

 NSScreen * mainscreen = [NSScreen mainScreen];

然后创建跟随线程。

  1. 主题3:队列:com.apple.libdispatch-manager
  2. 主题5
  3. 主题6
  4. 线程7
  5. 线程3的调用堆栈是 kevent64 _dispatch_mgr_thread

    线程5,6和7的调用堆栈是 __workq_kernreturn start_wqthread

    为什么线程3,5,6和7突然出现在[NSScreen主屏幕]上?

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

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

1 个答案:

答案 0 :(得分:2)

Mac Developer Library

中所述
  

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