【发布时间】:2012-04-26 11:46:43
【问题描述】:
说,如果timerFired(定时器处理程序)被之前使用NSTimer或CADisplayLink的设置调用,并且touchesBegan在用户触摸屏幕时也被调用,是否会发生任何竞争条件?两个处理程序(定时器处理程序和触摸事件处理程序)内的代码?
【问题讨论】:
标签: ios cocoa-touch
说,如果timerFired(定时器处理程序)被之前使用NSTimer或CADisplayLink的设置调用,并且touchesBegan在用户触摸屏幕时也被调用,是否会发生任何竞争条件?两个处理程序(定时器处理程序和触摸事件处理程序)内的代码?
【问题讨论】:
标签: ios cocoa-touch
如果计时器处理程序和touchesBegan 都在主线程上运行,那么它们中的代码就不能混合(它们在同一个线程上)。这是正常情况。
可能存在竞争条件,即计时器可能在touchesBegan 之前或之后运行,但如果它们在同一个线程上,它们就不能同时运行。如果您将计时器附加到另一个线程的运行循环(这是非常不寻常的事情),它们只会在不同的线程上。
【讨论】: