我知道NSCache
是線程安全的,但是我找不到任何提到NSURLCache
是線程安全的文檔。NSURLCache線程安全嗎?
5
A
回答
3
通常我會帶@ bbum對這一立場,但在NSURLCache
的情況下不同意。
NSURLConnection
是線程安全的,在這個意義上,一個給定的實例可以在您選擇的線程調度(但不要試圖在多線程調度的單個實例!)
默認情況下,所有的連接與+[NSURLCache sharedCache]
交互。邏輯上,這意味着要麼NSURLCache
本身是線程安全的,要麼提供了一個客戶端可以明確調用自己的鎖定機制。由於後者不存在,我推斷NSURLCache
是線程安全的。
還是會這樣來正式記錄下來,介意!
9
除非documentation明確表示NSURLCache
是線程安全的,那麼它不是線程安全的。
(文檔說任何關於線程,因此不是線程安全的。)
4
請允許我向兩個輝煌的答案與參考updated documentation合併成第三個,現在:
線程安全
在iOS系統中8和更高版本,和MacOS 10.10及更高版本, NSURLCache是線程安全的。
雖然NSURLCache實例方法可以安全地從 多個執行上下文同時呼籲,要注意方法 像cachedResponseForRequest:和storeCachedResponse:forRequest: 試圖讀取或寫入 響應時有不可避免的競爭條件同樣的要求。
NSURLCache的子類必須以這種 線程安全的方式實現重寫的方法。
也就是說,除非你明確地調用cachedResponseForRequest:
,storeCachedResponse:forRequest:
或其他「方法一點通」,你會跨線程安全的。 「這些」的方法似乎是爲讀者留下的一個練習,但是由於你會遇到「不可避免的競爭條件」,所以最終你很有可能找到:-)
相關問題
- 1. java線程安全:線程安全嗎?
- 2. Spring mongoTemplate線程安全嗎?
- 3. Lparallel.queue線程安全嗎?
- 4. BoxClient線程安全嗎?
- 5. EventHubClient.SendBatchAsync - 線程安全嗎?
- 6. .NET:JsonMediaTypeFormatter線程安全嗎?
- 7. multiset equal_range線程安全嗎?
- 8. pip線程安全嗎?
- 9. com.google.cloud.datastore.Datastore線程安全嗎?
- 10. WNetGetResourceInformation線程安全嗎?
- 11. qsort線程安全嗎?
- 12. work_queue線程安全嗎?
- 13. .NET DateTime線程安全嗎
- 14. DynamoDBContext線程安全嗎?
- 15. 在Python線程安全嗎?
- 16. java.lang.reflect.Method線程安全嗎?
- 17. HttpContext.Current.Cache線程安全嗎?
- 18. UIFont線程安全嗎?
- 19. C#+ =線程安全嗎?
- 20. Go bytes.Buffer線程安全嗎?
- 21. SynchronizationContext.Post()線程安全嗎?
- 22. Guava Table線程安全嗎?
- 23. EPiServer線程安全嗎?
- 24. 是java.sql.Connection線程安全嗎?
- 25. 是CreateChildContainer()線程安全嗎?
- 26. 是Thread.getStackTrace()線程安全嗎?
- 27. Windows'rand_s線程安全嗎?
- 28. 是DocumentBuilder.parse()線程安全嗎?
- 29. 是javax.sql.DataSource線程安全嗎?
- 30. putStrLn線程安全嗎?