我有一個dispatch_async調用一個輔助線程,僅用於測試目的,我想睡5秒的輔助線程。 下面是代碼:sleep()適用於iOS,但不適用於mac?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
sleep(5);
});
當我測試這個在Mac OSX 10.7.2獅子,睡眠()函數不把線程睡眠。在iPhone模擬器上使用相同的代碼。
在mac上,sleep在主線程上工作,在輔助線程上使用[NSThread sleepUntilTimeInterval:]也可以工作。
爲什麼sleep()函數不能在Mac上的輔助線程上工作? 謝謝。
看看[大中央調度與NSThread](http://stackoverflow.com/questions/5653522/grand-central-dispatch-vs-nsthread)和[有任何理由不使用睡眠在一個Grand Central Dispatch queue?](http://stackoverflow.com/questions/4668634/iphone-is-it-ok-to-use-usleep-on-a-secondary-thread-on-grand-central-dispatch) – 2012-01-14 19:24:23