測試的時候可以將線程觸發(fā)事件放在Button中
// 延遲時間
- (IBAction)didClickAfterButton:(id)sender {
設置線程觸發(fā)時間(5秒后運行)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (ino64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"等我5秒");
});
}
點擊延遲按鈕才菠,控制臺出現(xiàn)如下效果:
** 等我5秒**
// 重復執(zhí)行
- (IBAction)didClickApplyButton:(id)sender {
// 重復10次怎棱,觸發(fā)該線程
dispatch_apply(10, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t t) {
NSLog(@"重復十次, 第%zu次", t);
});
}```
點擊重復執(zhí)行按鈕脱惰,控制臺效果:
**重復十次, 第0次
重復十次, 第4次
重復十次, 第1次
重復十次, 第3次
重復十次, 第5次
重復十次, 第2次
重復十次, 第7次
重復十次, 第6次
重復十次, 第8次
重復十次, 第9次**
// 當一個分組執(zhí)行結(jié)束年枕, notify之中的才會執(zhí)行
-
(IBAction)didClickNotifyButton:(id)sender {
// 創(chuàng)建分組標簽
dispatch_group_t groupA = dispatch_group_create();// 使用分組
// 創(chuàng)建隊列
dispatch_queue_t myQueue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT); // 表示并發(fā)執(zhí)行
dispatch_group_async(groupA, myQueue, ^{
[self printNumber:@"groupA"];
});
dispatch_group_async(groupA, myQueue, ^{
[self printNumber:@"groupAA"];
});
// notify
dispatch_group_notify(groupA, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"groupA的都執(zhí)行完以后殃恒, 我才執(zhí)行");
});
}```
點擊nogify按鈕之后當分組groupA中的程序執(zhí)行完之后nogify才執(zhí)行
Barrier用法
- (IBAction)didClickBarrierButton:(id)sender {
// 使用分組
// 創(chuàng)建隊列
dispatch_queue_t myQueue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(myQueue, ^{
[self printNumber:@"groupA"];
});
dispatch_async(myQueue, ^{
[self printNumber:@"groupB"];
});
dispatch_async(myQueue, ^{
[self printNumber:@"opC"];
});
// Barrier
dispatch_barrier_async(myQueue, ^{
[self printNumber:@"當我執(zhí)行時,沒人能和我搶"];
});
}```
上述代碼控制臺顯示結(jié)果可以看出:并發(fā)執(zhí)行中Barrier的代碼單獨自己執(zhí)行顯示了Barrier的獨立性