iphone:sleepUntilDate vs sleep

时间:2010-08-18 00:36:35

标签: iphone iphone-sdk-3.0 ios-simulator

这是问题:

我有两个主题:主要主题和另一个主题。

  • 在主线程上我执行任何与gui相关的内容
  • 在另一个线程上我执行所有计算

在某些操作上我必须停止第二个线程几秒钟,等待第一个线程做某事......

我的问题:

这是最好的选择,为什么? 在第二个线程..

  1. 使用sleepUntilDate
  2. 使用睡眠功能
  3. 还有其他选择吗?
  4. 伪代码是这样的:

    在第二个帖子上:

    ... 
    do some calculations
    send the results to the first thread and wait for the # of seconds to wait (let's say K)
    wait K seconds
    

1 个答案:

答案 0 :(得分:1)

如果时间突然改变,

+[NSThread sleepForTimeInterval:]更有可能做你想做的事。处于第二个线程不会影响事情。

但是,我不明白为什么第二个线程根本不应该睡觉。如果您想等待新数据,请使用NSCondition或NSConditionLock等信号来指示数据何时到达。

或者,根本不要直接使用线程。您可以使用NSOperation或performSelectorInBackground:或dispatch_ *来命名。

编辑:在编写传统的线程同步代码时,您需要非常小心,并且每次编辑时都需要一样小心< / em>添加新功能。我有一些线程代码,我需要考虑几分钟来弄清楚发生了什么。死锁并不好玩。