在背景线上画画是安全的。这个
docs for
-nextDrawable
调用此方法块
当前CPU线程
(强调补充)如果它只能在主线程上调用,那可能就不会如此普遍。另外,苹果的一般建议是避免阻塞主线程,所以你会认为他们会以某种方式说出这一事实,比如建议你不要调用它,除非你很确定它不会阻塞。
对于如何使用drawable(而不是获得drawable),请注意,典型的用例是调用命令缓冲区的
-presentDrawable:
方法。该方法便于添加调度处理程序块(如via
-addScheduledHandler:
)然后会打电话给
-present
在抽屉上。未指定将在哪个线程或队列上调用处理程序块,这表明没有承诺
调用drawable将在主线程上发生。
-出席
. drawable会一直等到渲染或写入其纹理的任何命令完成,然后才会显示到屏幕上。它没有指定如何实现异步性,但它进一步表明,无论哪个线程
-出席
被召唤。
在
Metal Programming Guide
the section on Multiple Threads, Command Buffers, and Command Encoders
. 注意,这里讨论的是后台线程正在填充命令缓冲区,并且没有关于使用drawables的特定警告。同样,这是一种缺乏证据的论点,但我认为这是清楚的。他们确实指出,一次只有一个线程可以作用于给定的命令缓冲区,因此他们正在考虑线程安全问题。