2014-09-26 56 views
11

我知道dispatch_time是根據設備時鐘的時間,如果設備進入休眠狀態,時鐘也會休眠。另一方面,dipatch_walltime是根據掛鐘的時間,掛鐘永遠不會入睡。我的問題是,在不同情況下使用其中一種或另一種是否存在性能差異或其他差異?有人可以給我更多的細節,因爲蘋果文檔並不詳盡。dispatch_time和dispatch_walltime之間有什麼區別,以及在哪些情況下最好使用其中一種?

例如,我正在編寫一個Timer類,它按特定間隔運行。此外,迴旋餘地可能是10到30秒。哪一個我應該使用dispatch_timedispatch_walltime,在性能方面。

回答

19

當計算機進入睡眠狀態時,dispatch_time停止運行。 dispatch_walltime繼續運行。所以如果你想從現在開始的一小時內做一個動作,但是5分鐘後你的電腦會休眠50分鐘,dispatch_walltime會在電腦醒來5分鐘後從現在開始執行一個小時。 dispatch_time將在計算機運行一小時後執行,即在喚醒55分鐘後執行。

相關問題