GCD understanding 1 (synchronous-asynchronous, serial-parallel), gcd asynchronous
1. Parallel-asynchronous (ST1 and ST2 seize resources)
1-1) obtain the parallel (global) queue. The default priority is DISPATCH_QUEUE_PRIORITY_DEFAULT.
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0);
1-2) create an asynchronous event.
dispatch_async(queue, ^{//do something 1 });dispatch_async(queue, ^{//do something 2 });
2. Serial-synchronization (sequential execution)
2-1) create a serial queue, and DISPATCH_QUEUE_SERIAL is a serial
dispatch_queue_t queue = dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL);
2-2) create a synchronization event.
dispatch_sync(queue, ^{//do something 1 });dispatch_sync(queue, ^{//do something 2 });
3. Parallel-synchronization (sequential execution)
3-1) obtain the parallel (global) queue. The default priority is DISPATCH_QUEUE_PRIORITY_DEFAULT.
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0);
3-2) create a synchronization event.
dispatch_sync(queue, ^{//do something 1 });dispatch_sync(queue, ^{//do something 2 });
4. Serial-asynchronous (strange to understand, test results, and sequential execution)
4-1) create a serial queue, and DISPATCH_QUEUE_SERIAL is a serial
dispatch_queue_t queue = dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL);
4-2) create an asynchronous event.
dispatch_async(queue, ^{//do something 1 });dispatch_async(queue, ^{//do something 2 });
Generally, 1-3 is enough, right ?!