1.自旋鎖:OSSpinLock 在ios中已經(jīng)不是線程安全的了,如果共享數(shù)據(jù)已經(jīng)有其他線程加鎖了跨琳,線程會(huì)以死循環(huán)的方式等待鎖,一旦被訪問的資源被解鎖,則等待資源的線程會(huì)立即執(zhí)行夺蛇。(效率最高,如果一直等不到鎖會(huì)較占用cpu資源)
2.信號(hào)鎖:dispatch_semaphore是gcd中通過信號(hào)量來實(shí)現(xiàn)共享數(shù)據(jù)的數(shù)據(jù)安全酣胀。(效率第二)
3.互斥鎖:pthread_mutex 刁赦,nslock ,synchronized都是互斥鎖闻镶。如果共享數(shù)據(jù)已經(jīng)有其他線程加鎖了甚脉,線程會(huì)進(jìn)入休眠狀態(tài)等待鎖。一旦被訪問的資源被解鎖铆农,則等待資源的線程會(huì)被喚醒牺氨。(synchronized效率最低)
4.遞歸鎖:pthread_mutex(recursive)與NSRecursiveLock , 多次調(diào)用不會(huì)阻塞已獲取該鎖的線程。
5.條件鎖:nsconditionlock 滿足一定的條件的加鎖和解鎖猴凹,可以實(shí)現(xiàn)依賴關(guān)系酝豪。nscondition條件鎖,也是通過信號(hào)量來解鎖精堕,主要用來實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式孵淘。