Pei*_*Pei 6 multithreading caching nsurlcache ios urlsession
我知道NSCache是线程安全的,但我找不到任何提到NSURLCache的线程安全的文件.
请允许我将这两个精彩的答案合并为第三个答案,现在提及更新的文档:
线程安全
在iOS 8及更高版本以及macOS 10.10及更高版本中,NSURLCache是线程安全的.
虽然NSURLCache实例方法可以安全地从多个执行上下文同时呼吁,要知道,类似的方法
cachedResponseForRequest:,并storeCachedResponse:forRequest:试图读取或写入相同请求的响应时,有一个不可避免的竞争条件.NSURLCache的子类必须以这种线程安全的方式实现重写方法.
也就是说,除非你明确地调用cachedResponseForRequest:,storeCachedResponse:forRequest:或者其他"方法相似" ,否则你将跨线程安全.这些"类似"的方法,似乎是一个留给读者的练习,但是既然你会遇到"不可避免的竞争条件",你很有可能最终弄明白:-)
通常我会采取@bbum的立场,但如果NSURLCache不同意的话。
NSURLConnection是线程安全的,因为可以在您选择的线程上调度给定的实例(但不要尝试在多个线程上调度单个实例!)
默认情况下,连接都与+[NSURLCache sharedCache]. 从逻辑上讲,这意味着要么NSURLCache本身是线程安全的,要么提供客户端可以显式调用自己的锁定机制。由于后者不存在,我推断它NSURLCache是线程安全的。
仍然希望将其正式记录下来,介意!
| 归档时间: |
|
| 查看次数: |
735 次 |
| 最近记录: |