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