在iOS和Cocoa Touch上,touchesBegan和timerFired会有竞争条件吗?

时间:2012-04-26 11:46:43

标签: ios cocoa-touch

比如说,如果先前使用timerFiredNSTimer设置CADisplayLink(计时器处理程序),并且当用户触摸屏幕时也会调用touchesBegan,可以在两个处理程序(定时器处理程序和触摸事件处理程序)中的代码中发生任何竞争条件吗?

1 个答案:

答案 0 :(得分:4)

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

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