iOS GCD —并发和线程

,로,글입니다。 。다있습니。

GCD的并发性和线程化。

스레드(thread)프로그램내에서내에서세다말한다。다。 만로한그램은스그램은가지있지만,만로그램이둘스상의있다。 이멀티멀티 스멀티 (多线程)한다。

主线程(UI)和后台线程,以及Apple的Grand Central Dispatch(GCD)和 NSOperatin Queue的产品。 이는thread를관리해야하는해준다。 已在GCD上添加了任务,然后在GCD上添加了GCD。

并发性。 。다수의이실행되는다。

프로세스나리어플이션은상의상의이그스상의가진다。 OS调度程序,然后单击“计划”。

使用时间片 ,使用并行处理。

  • 능가능
  • race이race(比赛条件)방지
  • 느림(모든이그이작업이끝나길기렸다렸기되)

并发队列。 。이순서대로실행됨을보장하지만이끝나는다없다。

  • 불가불
  • 빠름

들어,용자의사를를다고때다고할지할지않다않다。 。다。 并发队列。 할때는지를로순서가중요하다고串行队列를를다

GCD세가지메인공한공한공한공한공한.。

  1. 主队列主线程 동작하며 串行队列 이다。
 让mainQueue = DispatchQueue.main 

2.全局队列并行队列 이다。 高,默认,低,背景。 QOS(Quality of Service)类의로퍼티를지정정다。 GCD相片和影片。

  let backgroundQueue = DispatchQueue.global(qos:DispatchQoS.QoSClass.background) 

QoS类。

  • 用户交互性互动式用户界面。 UI업데이트나,이벤트리나지연이적은사용한다。 。이이스에서스。스한다。
  • 用户启动 :用户界面中的用户界面。 全局队列。
  • 实用程序 :进度指示器보이걸리는이들어간다。 I,I / O,네트워킹,터이터지데이필요한사용한다。 全局队列。
  • 背景 :유저가신경쓰지작업들이들어간다。 预取,维护,维护,维护。 后台优先级全局队列。

3.自定义队列 :队列排队,并发队列。

  //自定义Serail队列 
let serialQueue = DispatchQueue(label:“ com.example.serial”)//自定义并发队列
设置并发队列= DispatchQueue(标签:“ com.example.concurrent”,属性:.concurrent)

GCD ly同步혹은异步있다。

同步功能,呼叫者。

DispatchQueue.sync(execute:)

异步功能작업이순차적이완료될때까이완료될때까이완료 될때 까지지다 지다。 따라서异步功能은레드막막막지않는다。 DispatchQueue.async(execute:)

  //自定义并发queuelet queue1 = DispatchQueue(标签:“ com.example.concurrent”,属性:.concurrent)//自定义serail queuelet queue2 = DispatchQueue(标签:“ com.example.serial”)queue1.async {printFiveTimes(“ 🍏“)} print(” a0“)queue1.sync {printFiveTimes(”🌕“)} print(” a1“)queue2.async {printFiveTimes(”🍎“)} print(” a2“)queue2.sync {printFiveTimes( “💜”)} print(“ a3”)// prints0a0🌕0🍏1🌕1🍏2🌕2🍏3🌕3🍏4🌕4a1🍎0🍎1🍎2a2🍎3🍎4💜0💜1💜2 💜3💜4a3 //설명 
-queue1.async🍏=> async로전에🍏등록되자마자등록되자마자도队列전에0 0출력a0출력。 이때,并发队列이기print이打印순서는queue-queue1.sync🌕=>同步로기출력이출력1 a1출력-queue2.async🍎=> aysnc실행되었가가가 자마자控制💜도队列전에끝나a2출력。 이때,串行队列이때문에출력queue-queue2.sync💜=>同步로실행되었출력3 a3 sync

https://www.raywenderlich.com/5370-grand-central-dispatch-tutorial-for-swift-4-part-1-2

https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)