解析Objective C中的鎖

2021-06-28 14:34:56 字數 524 閱讀 4996

在ios開發中常用的鎖是nslock來實現簡單的互斥。nslock的操作有lock,unlock,trylock,lockbeforedate,故名思意lock和unlock是簡單的執行緒鎖,trylock和lockbeforedate是ios實現的兩種不阻塞執行緒的方法。

trylock的時候並不阻塞執行緒,如果lock失敗的話會返回no;

lockbeforedate是用出入日期來決定何時解鎖的。

ios中還有遞迴鎖nsrecurisvelock,條件鎖nscoditionlock,分布鎖nsdistributelock.

遞迴鎖nsrecurisvelock:通常用在遞迴中,不會造成執行緒阻塞。但是lock和unlock必須成對。

條件鎖nscoditionlock:可以傳入乙個公共變數作為條件,在不同執行緒時間達到同步。

分布鎖nsdistributelock:以檔案作為鎖的條件,可以在不同程序之間訪問達到程序同步。

另外ios中還可以使用@synchronize來實現執行緒互斥。可以用以objc物件來做為不同執行緒之間的令牌。

Objective C中不同方式實現鎖 二

在上一文中,我們已經討論過用objective c鎖幾種實現 跳轉位址 也用 實際的演示了如何通過構建乙個互斥鎖來實現多執行緒的資源共享及執行緒安全,今天我們繼續討論鎖的一些高階用法。1.nsrecursivelock遞迴鎖 平時我們在 中使用鎖的時候,最容易犯的乙個錯誤就是造成死鎖,而容易造成死鎖...

Objective C中不同方式實現鎖(2)

在上一文中,我們已經討論過用objective c鎖幾種實現 跳轉位址 也用 實際的演示了如何通過構建乙個互斥鎖來實現多執行緒的資源共享及執行緒安全,今天我們繼續討論鎖的一些高階用法。1.nsrecursivelock遞迴鎖 平時我們在 中使用鎖的時候,最容易犯的乙個錯誤就是造成死鎖,而容易造成死鎖...

Objective C中的快取

nscache可以設定數量限制,通過countlimit與 totalcostlimit來限制cache的數量或者限制cost。當快取的數量超過countlimit,或者cost之和超過totalcostlimit,nscache會自動釋放部分快取。例子如下 可以看到,cache中只保留了最新的30...