iOS中的5種鎖

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條件鎖,也是通過信號量來解鎖,主要用來實現生產者消費者模式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容