多線程面試題高級

1、首先認識清楚,多線程分為:并行和串行,,并行和串行又可以包括同步線程和異步線程。GCD僅僅支持FIFO(先入先出)隊列

2、不管是并行還是串行,只要是同步線程,都是按順序執行;

3、技術幾個名詞:線程阻塞(dispatch_barrier_async)、線程等待(dispatch_after)、線程死鎖,在全局并發隊列中,可以設置優先級

4、在認識多線程特點:我們平時用時需要先建立多線程對象,然后在添加任務(同步、異步 執行),,,有時候我們有多個線程,一般用線程組來管理(在線程組里的線程都完成時,或觸發全部完成方法(dispatch_group_notify))。

5、死鎖的4個必要條件:互斥、請求保持、不可剝奪、環路(主要是資源競爭及進程推進順序非法)

補充關系:

①:先搞清兩者的關系,NSOpertaionQueue用GCD構建封裝的,是GCD的高級抽象!

②:GCD僅僅支持FIFO(先入先出)隊列,而NSOperationQueue中的隊列可以被重新設置優先級,從而實現不同操作的執行順序調整。GCD不支持異步操作之間的依賴關系設置。如果某個操作的依賴另一個操作的數據(生產者-消費者模型是其中之一),使用NSOperationQueue能夠按照正確的順序執行操作。GCD則沒有內建的依賴關系支持。

③:NSOperationQueue支持KVO,意味著我們可以觀察任務的執行狀態。

性能:

①:GCD更接近底層,而NSOperationQueue則更高級抽象,所以GCD在追求性能的底層操作來說,是速度最快的。

③:如果異步操作的過程需要更多的被交互和UI呈現出來,NSOperationQueue會是一個更好的選擇。底層代碼中,任務之間不太互相依賴,而需要更高的并發能力,GCD則更有優勢


功能點


功能點
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容