dispatch_sync與dispatch_async

轉載--出處

dispatch_sync和 dispatch_async需要兩個參數,一個是隊列,一個是block,它們的共同點是block都會在你指定的隊列上執行(無論隊列是并行隊列還是串行隊列),不同的是dispatch_sync會阻塞當前調用GCD的線程直到block結束,而dispatch_async異步繼續執行。

-(void)func{
    dispatch_async(someQueue, ^{
        //do some work.
        NSLog(@"Here 1.");
    });
    NSLog(@"Here 2.");
}
// dispatch_async異步非阻塞,所以Here 1.和Here 2.的打印順序不確定

-(void)func{
    dispatch_sync(someQueue, ^{
        //do some work.
        NSLog(@"Here 1.");
    });
    NSLog(@"Here 2.");
}
// 因為dispatch_sync阻塞當前操作知道block返回,所以打印順序一定是Here 1. 然后再打印Here 2
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容