1、進程和線程 多線程
2、各類隊列!併發
一、GCD:Grand Central Dispatch異步
二、串行隊列(Serial)async
三、並行隊列(Concurrent)spa
四、主調度隊列(main dispatch queue)線程
3、隊列的任務處理設計
一、串行隊列(✅DISPATCH_QUEUE_SERIAL)的同步任務和異步任務:dispatch_sync 和 dispatch_async 3d
#串行同步執行結果:不會建立新線程,按照 順序執行blog
#串行異步執行結果:建立了一個新線程,可是依然按照 順序執行隊列
#串行先執行異步,再執行同步的結果:發現同步一直是在主線程,但也是先讓異步的執行完再來執行同步的,
從而說明一個串行隊列是順序執行的,可是也不影響主線程的操做
二、並行隊列(✅DISPATCH_QUEUE_CONCURRENT)的同步任務和異步任務:dispatch_sync 和 dispatch_async
#並行同步執行結果:不會建立新線程,按照 順序執行[同串行同步]
#並行異步執行結果:會新建多個線程、操做無序執行(有⽤,容易出錯!)隊列前若是有其餘任務,會等待前面的任務完成以後再執⾏
場景:既不影響主線程,又不須要順序執⾏行的操做!
#並行先執行同步,再執行異步的結果:發現同步執行完纔會執行異步
#並行先執行異步,再執行同步的結果:順序已經徹底各類亂入了!
三、全局隊列(DISPATCH_QUEUE_PRIORITY_DEFAULT):開發中用這個就對了dispatch_get_global_queue
#全局隊列先執行同步,再執行異步的結果:實際上結果是和並列的都同樣的效果
四、主線程隊列:dispatch_get_main_queue[主隊列中添加的同步操做永遠不會被執⾏行,會死鎖]
4、嵌套同步任務
一、在串行隊列中嵌套多一個同步任務,會形成阻塞!!
5、小結一下
一、並行和串行的任務調度的區別