• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SwiftUI GCD教程之DispatchGroup基礎使用實現同步更新(教程含源碼)

    標簽: 隊列  java  多線程  并發編程  python

    實戰需求

    SwiftUI GCD教程之DispatchGroup基礎使用實現同步更新

    本文價值與收獲

    看完本文后,您將能夠作出下面的界面

    截屏2020-08-29 下午5.58.45.png
    Jietu20200829-175955.gif

    看完本文您將掌握的技能

    • 掌握 DispatchGroup

    基礎知識

    DispatchGroup

    一個任務組合監控一個獨立的單元,然后我們就可以知道這一組任務什么時候完成了。

    class DispatchGroup : DispatchObject

    總覽

    通過組,您可以聚合一組任務并同步組上的行為。您將多個工作項附加到一個組,并安排它們在同一隊列或不同隊列上異步執行。當所有工作項完成執行時,組將執行其完成處理程序。您也可以同步等待組中的所有任務完成執行。


    DispatchQueue

    用于管理應用程序主線程或后臺線程上串行或并行執行的任務的類。

    class DispatchQueue : DispatchObject

    總覽

    調度隊列是FIFO隊列,您的應用程序可以以塊對象的形式向其提交任務。調度隊列可以串行或并行執行任務。提交給調度隊列的工作在系統管理的線程池上執行。除了代表應用程序主線程的調度隊列之外,系統無法保證它使用哪個線程來執行任務。

    您可以同步或異步計劃工作項。當您同步安排工作項時,您的代碼將等到該項目完成執行。當您異步調度工作項時,您的代碼將繼續執行,而工作項將在其他地方運行。

    重要,嘗試在主隊列上同步執行工作項會導致死鎖。

    避免過多的線程創建

    在設計用于并發執行的任務時,請勿調用會阻塞當前執行線程的方法。當由并發調度隊列調度的任務阻塞線程時,系統會創建其他線程來運行其他排隊的并發任務。如果有太多任務阻塞,則系統可能會耗盡您的應用程序的線程。

    應用程序消耗太多線程的另一種方法是創建過多的私有并發調度隊列。因為每個調度隊列都消耗線程資源,所以創建其他并發調度隊列會加劇線程消耗問題。代替創建私有并發隊列,將任務提交到全局并發調度隊列之一。對于串行任務,請將串行隊列的目標設置為全局并發隊列之一。這樣,您可以在最小化創建線程的單獨隊列數量的同時,維護隊列的序列化行為。



    實戰代碼

    版權聲明:本文為iCloudEnd原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/iCloudEnd/article/details/108317364

    智能推薦

    SwiftUI 官方教程 (十)

    由于 API 變動,此文章部分內容已失效,最新完整中文教程及代碼請查看 https://github.com/WillieWangWei/SwiftUI-Tutorials 創建 watchOS App 本教程為你提供一個將你已經學到的關于 SwiftUI 的知識應用到自己的產品上的機會,并且不費吹灰之力就可以將 Landmarks app 遷移到 watchOS 上。 首先,給項目添加一個 wa...

    SwiftUI 官方教程 (一)

    由于 API 變動,此文章部分內容已失效,最新完整中文教程及代碼請查看 https://github.com/WillieWangWei/SwiftUI-Tutorials SwiftUI 簡介 SwiftUI 是一種為任何 Apple 平臺聲明用戶界面的現代化方式。以前所未有的速度,創建漂亮、動態的應用程序。 只需要描述一次的布局 為你的視圖聲明任何狀態的內容和布局,一旦狀態發生改變, Swif...

    SwiftUI 2.0 toolbar 和 ToolbarItem 基礎教程含源碼

    一、基礎知識 toolbar(items:) 可將指定項目填充到工具欄或導航欄。 (一)ToolbarItem 表示可放置在工具欄或導航欄中的項的模型。 (二)ToolbarItem 分類 二、使用教程 1、.bottomBar 該項放置在底部工具欄中。 bottomBar 使用代碼...

    SwiftUI 2.0 matchedGeometryEffect 基礎教程含源碼

    看完SwiftUI的新增功能后,引起我注意的一個功能是matchGeometryEffect。 這是一個新的SwiftUI效果,可以在兩個視圖之間插入位置和大小。 讓我們看看我們能用它做什么。 基礎知識 matchedGeometryEffect 使用您提供的標識符和名稱空間定義一組具有同步幾何的視圖。 使用教程 SwiftUI已經為我們內插視圖的屬性,而無需matchGeometryEffect...

    SwiftUI 實現IF語句控制View顯示 (教程含源碼)

    實戰需求 SwiftUI 強大布局能力但是缺少了條件控制語言,本文通過ViewBuilder實現了IF語句控制View顯示。 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握 @ViewBuilder 基礎使用 掌握 foregroundColor 掌握 background 基礎知識 ViewBuilder 一個自定義參數屬性,用于從閉包構造視圖。 總覽 您通常將...

    猜你喜歡

    SwiftUI Scrollview sheet組合使用 (教程含源碼)

    實戰需求 SwiftUI Scrollview sheet組合使用 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握 Identifiable 掌握 UUID 掌握 ObservableObject 掌握 GridItem 掌握 ScrollView 掌握 LazyVGrid 掌握 onTapGesture 基礎知識 Identifiable 一類類型,其實例持有具...

    SwiftUI sheet 和 form picker組合使用 (教程含源碼)

    實戰需求 SwiftUI sheet 和 form 組合使用 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握 sheet 掌握 form 掌握 picker 基礎知識 sheet 在給定條件為真時顯示工作表。 isPresented 是否顯示工作表的綁定。 onDismiss 工作表關閉時執行的關閉。 content 返回表內容的閉包。 Form 用于對用于數據輸...

    SwiftUI Toolbar如何使用NavigationLink 教程含源碼 ToolbarItem

    實戰需求 SwiftUI Toolbar如何使用NavigationLink 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握 background 掌握 NavigationLink 掌握 toolbar 掌握 ToolbarItem 基礎知識 background(_:alignment:) 將給定視圖分層放置在該視圖之后。 參量 b...

    SwiftUI Button 基礎教程

    Button 觸發時執行操作的控件 使用教程 您可以通過提供操作和標簽來創建按鈕。操作是一個方法或閉包屬性,當用戶單擊或輕觸按鈕時,它會執行某些操作。標簽是描述按鈕操作的視圖,例如,通過顯示文本(如取消)或圖標(如后退箭頭)。 代碼 iOSButton效果 macOS代碼 tvOS代碼 推薦 基礎文章推薦 《SwiftUI是什么,聽聽大牛們如何說》 經典教程推薦 更新近百篇SwiftUI教程《Sw...

    macOS SwiftUI教程之繪制矩形邊框stroke closeSubpath(教程含源碼)

    實戰需求 macOS SwiftUI教程之繪制矩形邊框stroke 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 closeSubpath()在Path關閉的結尾處調用方法,該方法將自動將當前點與原點連接起來。 .stroke修飾符并指定線條的寬度和顏色。 基礎知識 Path 2D形狀的輪廓。 實戰代碼 加入我們一起學習SwiftUI QQ:3365059189 Sw...

    精品国产乱码久久久久久蜜桃不卡