串行隊列和并行隊列的區(qū)別是串行隊列的最大并發(fā)量為1颜价,若最大并發(fā)量為1,async會自動轉(zhuǎn)成barrier_async執(zhí)行。
sync任務(wù)會通過線程私有信號量堵塞在當前線程敷搪,等待任務(wù)執(zhí)行莺禁。又因為串行隊列需要等待隊列前面任務(wù)結(jié)束后執(zhí)行下一個任務(wù)留量,若sync寫在串行隊列的其他任務(wù)內(nèi)部 就會導(dǎo)致死鎖。如:
queue.async { queue.sync {} }
queue.sync { queue.sync {} }