一 背景
有天晚上我作為ios工程師的gf突然問我,同步串行隊(duì)列和異步串行隊(duì)列有什么區(qū)別?作為代碼人這些概念我們平時都是覺得是基本問題,但是在回復(fù)的時候 我突然覺得有點(diǎn)不太對..
二 知識介紹
2.1 何為同步?
同步我的理解就是任務(wù)執(zhí)行有依賴關(guān)系,從結(jié)果角度說,這些任務(wù)是前后有序的執(zhí)行結(jié)果。
2.2 何為異步?
異步我理解就是任務(wù)執(zhí)行沒有依賴關(guān)系,從結(jié)果角度說,這些任務(wù)的執(zhí)行是無序的。
2.3 何為串行?
串行我的理解就是在多任務(wù)在執(zhí)行過程中 任務(wù)是像串起來一樣,一個一個任務(wù)串起來執(zhí)行
2.4 何為并行?
并行我的理解就是在多任務(wù)的執(zhí)行過程中 任務(wù)是可以同時執(zhí)行的。
三 區(qū)別何在?
其實(shí)我認(rèn)為同步/異步 串行/并行 是對同一個事情 不同的描述角度,同步和串行 描述的都是一個事情,前一個任務(wù)執(zhí)行完畢 后續(xù)一個任務(wù)才能執(zhí)行,串行是任務(wù)的調(diào)度過程 而同步是串行的結(jié)果,同理異步/并行 也是一樣
四 回到原來的問題,ios 的同步串行隊(duì)列,和異步串行隊(duì)列何解?
原來描述的是 ios 的dispatch_sync和 dispatch_async 對應(yīng)相對概念,同步/異步是ios主隊(duì)列和執(zhí)行隊(duì)列之間調(diào)度情況,串行/并行 是執(zhí)行隊(duì)列內(nèi)部任務(wù)調(diào)度的情況。。。
五 總結(jié)
我認(rèn)為串行/并行的調(diào)度方式導(dǎo)致了同步/異步結(jié)果的產(chǎn)生