1.dispatch_barrier_async 不阻塞隊(duì)列但阻塞任務(wù) 實(shí)現(xiàn)攔截 (異步特性體現(xiàn)在將任務(wù)插入隊(duì)列的過(guò)程,而等待特性體現(xiàn)在任務(wù)執(zhí)行的過(guò)程)
2.dispatch_barrier_sync 阻塞隊(duì)列也阻塞任務(wù) 實(shí)現(xiàn)攔截
// 串行隊(duì)列同步柵欄
- (void)serailQueueSyncRun {
dispatch_queue_t queue = dispatch_queue_create("com.queue.s", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
NSLog(@"yxg-- async- a");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- b");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- c");
});
// 阻塞隊(duì)列也阻塞任務(wù) 實(shí)現(xiàn)攔截
dispatch_barrier_sync(queue, ^{
NSLog(@"yxg-- barrier_sync-d");
});
NSLog(@"串行隊(duì)列同步柵欄函數(shù)");
dispatch_async(queue, ^{
NSLog(@"yxg-- async- e");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- f");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- g");
});
}
WeChatWorkScreenshot_0afc5b9f-7cc0-4c73-861b-da1522108241.png
// 串行隊(duì)列異步柵欄
- (void)serailQueueAsyncRun {
dispatch_queue_t queue = dispatch_queue_create("com.queue.s", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
NSLog(@"yxg-- async- a");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- b");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- c");
});
// 不阻塞隊(duì)列但阻塞任務(wù) 實(shí)現(xiàn)攔截
dispatch_barrier_async(queue, ^{
NSLog(@"yxg-- barrier_async- d");
});
NSLog(@"串行隊(duì)列異步柵欄函數(shù)");
dispatch_async(queue, ^{
NSLog(@"yxg-- async- e");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- f");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- g");
});
}
WeChatWorkScreenshot_10e5bf43-abd8-4e87-8456-fde1bcec7534.png
// 并行隊(duì)列異步柵欄
- (void)asyncRun {
dispatch_queue_t queue = dispatch_queue_create("com.queue.c", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{
NSLog(@"yxg-- async- a");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- b");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- c");
});
// 不阻塞隊(duì)列但阻塞任務(wù) 實(shí)現(xiàn)攔截
dispatch_barrier_async(queue, ^{
NSLog(@"yxg-- barrier_async- d");
});
NSLog(@"并行隊(duì)列異步柵欄函數(shù)");
dispatch_async(queue, ^{
NSLog(@"yxg-- async- e");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- f");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- g");
});
}
WeChatWorkScreenshot_c4c77daf-0487-4c67-a8c0-afb9ea6097fb.png
// 并行隊(duì)列同步柵欄
- (void)syncRun {
dispatch_queue_t queue = dispatch_queue_create("com.queue.c", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{
NSLog(@"yxg-- async- a");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- b");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- c");
});
// 阻塞隊(duì)列也阻塞任務(wù) 實(shí)現(xiàn)攔截
dispatch_barrier_sync(queue, ^{
NSLog(@"yxg-- barrier_sync-d");
});
NSLog(@"并行隊(duì)列同步柵欄函數(shù)");
dispatch_async(queue, ^{
NSLog(@"yxg-- async- e");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- f");
});
dispatch_async(queue, ^{
NSLog(@"yxg-- async- g");
});
}
WeChatWorkScreenshot_2a551702-7338-42c1-9692-f6cdc7fdc1e4.png