1
說,如果timerFired
(定時器處理程序)通過使用NSTimer
或CADisplayLink
的早期設置調用,並且touchesBegan
也在用戶觸摸屏幕時調用,那麼在兩個處理程序內部的代碼中是否會發生任何競爭條件(定時器處理函數和觸摸事件處理程序)?在iOS和Cocoa Touch上,touchesBegan和timerFired會有競爭狀態嗎?
說,如果timerFired
(定時器處理程序)通過使用NSTimer
或CADisplayLink
的早期設置調用,並且touchesBegan
也在用戶觸摸屏幕時調用,那麼在兩個處理程序內部的代碼中是否會發生任何競爭條件(定時器處理函數和觸摸事件處理程序)?在iOS和Cocoa Touch上,touchesBegan和timerFired會有競爭狀態嗎?
如果一個定時器處理程序和touchesBegan
都在主線程上運行,那麼它們中的代碼就不能混合(它們在同一個線程中)。這是正常情況。
可能有競爭條件,計時器可能會在touchesBegan
之前或之後運行,但如果它們在同一個線程上,則它們不能同時運行。如果將計時器連接到另一個線程的runloop(這是非常不尋常的事情),它們只會在不同的線程上。
+1正確的答案。 – Till 2012-04-27 01:06:04