Tôi đã tạo một hàng đợi nối tiếp như thế này:
dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL);
Sự khác biệt giữa dispatch_async
được gọi như thế này là gì
dispatch_async(_serialQueue, ^{ /* TASK 1 */ });
dispatch_async(_serialQueue, ^{ /* TASK 2 */ });
Và dispatch_sync
được gọi như thế này trên hàng đợi nối tiếp này?
dispatch_sync(_serialQueue, ^{ /* TASK 1 */ });
dispatch_sync(_serialQueue, ^{ /* TASK 2 */ });
Hiểu biết của tôi là, bất kể phương thức công văn nào được sử dụng, TASK 1
sẽ được thực hiện và hoàn thành trước đó TASK 2
, đúng không?