併發執行程式碼 - 執行其他程式碼時執行程式碼

假設你想要執行操作(在這種情況下,記錄 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);
}

這將記錄 Foo100 次,每次記錄時暫停 100ms,但它將在單獨的執行緒上完成所有這些操作。在記錄 Foo 時,Bar 也將以 50ms 的間隔同時記錄。理想情況下,你應該看到 FooBars 混合在一起的輸出