1

比如说,如果timerFired(timer handler) 被之前的设置使用NSTimeror调用CADisplayLink,并且touchesBegan在用户触摸屏幕时也被调用,那么两个处理程序(定时器处理程序和触摸事件处理程序)内部的代码中是否会发生任何竞争条件?

4

1 回答 1

4

如果一个计时器处理程序touchesBegan都在主线程上运行,那么它们中的代码就不能混合(它们在同一个线程上)。这是正常情况。

可能存在竞争条件,即计时器可能在 之前或之后运行touchesBegan,但如果它们在同一个线程上,则它们不能同时运行。如果您将计时器附加到另一个线程的运行循环(这是一件非常不寻常的事情),它们只会在不同的线程上。

于 2012-04-26T20:05:41.560 回答