日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GCD的部分总结

發布時間:2023/12/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GCD的部分总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GCD是基于C語言的底層API,用Block定義任務用起來非常靈活便捷.

GCD的基本思想是就將操作放在隊列中去執行

(1)操作使用Blocks定義 (2)隊列負責調度任務執行所在的線程以及具體的執行時間 (3)隊列的特點是先進先出(FIFO)的,新添加至對列的操作都會排在隊尾 關于多線程的一些概念: ? GCD一共有5種隊列:main queue :主隊列,在主隊列中只有一個主線程,本質也是一個串行隊列 high priority queue:高優先級隊列 low?priority queue :低優先級隊列 background?priority queue:后臺隊列 default?priority queue :默認優先級隊列,也叫做自定義隊列,又分為: 1:串行隊列(serial queue):會順序執行隊列的里面的任務,一次只執行一個任務. 2:并行隊列(concurrent queue):會并發的執行隊列里面的任務,執行順序不確定. 常用方法: dispatch_sync:同步操作(任務),會執行完block的任務才進行下一個任務. dispatch_async:異步操作(任務),會把block提交給隊列就立即返回,不去關心block是否完成,由隊列去安排調用里面添加的block. 隊列和任務的使用: (1):串行隊列加入同步任務:不會產生新線程,隊列會把任務加入主線程中執行,有順序. (2):串行隊列中加入異步任務:會產生一個子線程.隊列會把任務加入到這個子線程中執行,有順序. (3):并行隊列中加入同步任務:不會產生新線程,隊列會把任務加入主線程中執行,有順序 (4):并行隊列中加入異步任務:根據需要產生多個子線程,任務沒有順序執行 (5):主線程隊列和GCD創建的隊列是不同的。在GCD中創建的隊列優先級沒有主隊列高,所以在GCD中的串行隊列開啟同步任務里面沒有嵌套任務是不會阻塞主線程 在主隊列中加入同步任務: ?會造成死鎖,原因是主隊列中只有一個線程就是主線程,而且該線程除非關閉程序,否則一直循環執行,同步任務在主隊列中優先級較高,為了能夠執行任務 ? ?就想搶占主線程資源來執行任務,而主線程卻又默認優先處理其他操作,不肯放手.兩個的優先級都很高,最終導致死鎖,阻塞線程了. 在主隊列中加入異步任務:主隊列會先降低異步任務的優先級,等空閑時會把該異步任務放入主線程中執行,所以不會造成堵塞,一般的UI更新都在主隊列的異步任務中完成.

轉載于:https://www.cnblogs.com/ioslaoniu/p/3781127.html

總結

以上是生活随笔為你收集整理的GCD的部分总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。