并发运行代码 - 运行其他代码时运行代码

假设你想要执行操作(在这种情况下,记录 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 混合在一起的输出