[英]Is NSURLCache thread safe?
我知道NSCache
是線程安全的,但是我找不到任何提到NSURLCache
線程安全的文檔。
請允許我將這兩個精彩的答案合並為第三個答案,現在提及更新的文檔 :
線程安全
在iOS 8及更高版本以及macOS 10.10及更高版本中,NSURLCache是線程安全的。
盡管可以安全地從多個執行上下文同時調用NSURLCache實例方法,但請注意,在嘗試讀取或寫入同一請求的響應時,像
cachedResponseForRequest:
和storeCachedResponse:forRequest:
這樣的方法會有不可避免的競爭條件。NSURLCache的子類必須以這種線程安全的方式實現重寫方法。
也就是說,除非你明確地調用cachedResponseForRequest:
, storeCachedResponse:forRequest:
或其他“類似方法”,否則你將跨線程安全。 這些“類似”的方法似乎是一個留給讀者的練習,但是既然你會遇到“不可避免的競爭條件”,你很有可能最終弄明白:-)
通常我會對此采取@bbum的立場,但在NSURLCache
不同意的情況下。
NSURLConnection
是線程安全的,因為可以在您選擇的線程上調度給定實例(但不要嘗試在多個線程上安排單個實例!)
默認情況下,連接都與+[NSURLCache sharedCache]
交互。 從邏輯上講,這意味着NSURLCache
本身就是線程安全的,或者提供了一種客戶端可以顯式調用自身的鎖定機制。 由於后者不存在,我推斷NSURLCache
是線程安全的。
請記住,這仍然需要正式記錄!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.