併發執行程式碼 - 執行其他程式碼時執行程式碼
假設你想要執行操作(在這種情況下,記錄 Foo
),同時執行其他操作(記錄 Bar
)。通常,如果不使用併發,其中一個操作將完全執行,另一個操作將在完成後執行。但是使用併發性,你可以同時執行兩個操作:
dispatch_async(dispatch_queue_create("Foo", DISPATCH_QUEUE_CONCURRENT), ^{
for (int i = 0; i < 100; i++) {
NSLog(@"Foo");
usleep(100000);
}
});
for (int i = 0; i < 100; i++) {
NSLog(@"Bar");
usleep(50000);
}
這將記錄 Foo
100 次,每次記錄時暫停 100ms,但它將在單獨的執行緒上完成所有這些操作。在記錄 Foo
時,Bar
也將以 50ms 的間隔同時記錄。理想情況下,你應該看到 Foo
和 Bars
混合在一起的輸出