dispatch_async によって 2 つのブロックをシリアル キューに送信すると、最初のブロックの後に 2 番目のブロックが実行されることが保証されますか。
- dispatch_async(serial_queue, b1);
- dispatch_async(serial_queue, b2);
b1 が b2 の前に実行されることを保証できますか?
以下は、完全なソース コード セクションです。
#define COUNTER 10000
m_value = 0;
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_queue_t queue = dispatch_queue_create("myqueue", NULL);
dispatch_group_t group = dispatch_group_create();
for (int i = 0; i < COUNTER; ++i) {
dispatch_group_async(group, globalQueue, ^() {
dispatch_async(queue, ^() {
++m_value;
});
});
}
dispatch_group_notify(group, queue, ^() {
NSLog(@"m_value Actual: %d Expected: %d", m_value, COUNTER);
});
dispatch_release(queue);
dispatch_release(group);
queue = nil;
group = nil;
return YES;
m_value == COUNTER を常に保証できますか? ありがとう