我在一个MacOS应用程序上工作,该应用程序使用CoreGraphics API检索整个屏幕作为图像或应用程序的各个窗口。这是用于屏幕共享功能。我们偶尔会遇到一个问题,其中苹果的WindowServer进程开始消耗大量CPU(接近100%),并且整个系统变得非常缓慢,几乎无法使用。
如果您杀死WindowServer或我们的应用程序,则一切恢复正常。即使您停止屏幕共享并且我们不再调用API,问题仍然存在,直到您终止我们的应用程序为止。
是否有人使用CoreGraphics API,或者是否知道如何与WindowServer进程连接,以洞悉我们在这些情况下可能会对WindowServer产生干扰的做法?
系统的一个转储表明我们的应用程序和其他应用程序确实在WindowServer上等待,而WindowServer几乎在其主线程中占用了整个转储时间。由于WindowServer并未完全冻结(因为UI仍可访问),因此似乎有点“软”死锁。这种情况很少见,但很麻烦。
谢谢!