1.自旋鎖:OSSpinLock 在ios中已經不是線程安全的了,如果共享數據已經有其他線程加鎖了,線程會以死循環(huán)的方式等待鎖,一旦被訪問的資源被解鎖,則等待資源的線程會立即執(zhí)行。(效率最高,如果一直等不到鎖會較占用cpu資源)
2.信號鎖:dispatch_semaphore是gcd中通過信號量來實現共享數據的數據安全。(效率第二)
3.互斥鎖:pthread_mutex ,nslock ,synchronized都是互斥鎖。如果共享數據已經有其他線程加鎖了,線程會進入休眠狀態(tài)等待鎖。一旦被訪問的資源被解鎖,則等待資源的線程會被喚醒。(synchronized效率最低)
4.遞歸鎖:pthread_mutex(recursive)與NSRecursiveLock , 多次調用不會阻塞已獲取該鎖的線程。
5.條件鎖:nsconditionlock 滿足一定的條件的加鎖和解鎖,可以實現依賴關系。nscondition條件鎖,也是通過信號量來解鎖,主要用來實現生產者消費者模式。