关于OS装置,我最近发现这是一种奇怪的行为。
法典
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"1111");
});
while (1) {
sleep(1);
}
});
法典:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"1111");
});
while (1) {
sleep(0.5);
}
});
《刑法》1 和《刑法》2 唯一的区别是,《刑法》1 睡着每 lo1秒钟,《刑法》2 睡觉0.5。
如果你使用这两种单质的“OS”仪器,则《法典》1将打印“@1111”,但《法典》2胜诉。
我不问,为什么认为全球问题同时存在。 无论其他各组成部分正在做什么,它都应永远印出数字。 如果由于这种单一核心装置的局限性,那么为什么睡觉(0.5)和睡觉(1)会带来变化?
我真的想知道这样做的原因。
EDIT
I found use sleep(0.5) is my stupid mistake. sleep()
function take an unsigned int parameter.So sleep(0.5) is equal to sleep(0). But do sleep(0) will block the whole concurrent queue?