我的应用程序从服务器、数据和数据描述符下载多个资源。这些由用户操作触发的下载可以同时执行,比如说一次最多 50 个下载。所有这些异步任务最终都会在内存中创建对象(例如,向数据结构添加叶子,例如向可变字典添加键或向数组添加对象)。我的问题是:这会导致稳定性问题吗?例如,如果多个同时执行的任务尝试将键添加到同一个字典中,我是否应该通过放置某种锁来处理这种情况?如果我实现一个在数组中查找图形元素的 for 循环,其他正在运行的任务是否有可能在循环“期间”更改数组内容?除了官方文档之外,还有关于多任务、多线程问题的参考资料或主要的一般方向吗?
取决于你如何处理下载 - 如果你使用 NSURLConnection 它会为你处理单独的线程/并发your代码是可重入的,因此您不必担心同时操作。
如果您创建自己的线程,则可能会遇到问题。
编辑:
您的代码在主线程(主运行循环)中运行,假设您有一个也在运行的 NSURLConnection,那么它将在单独的线程中运行。但是,处理连接过程中发生的事件的委托代码在运行循环中运行,而不是在其他线程中运行。这意味着您的代码一次只能执行一件事。连接成功的方法不会被调用同时与您的任何其他代码一样。如果您有一个 for 循环正在运行,那么它会阻塞您的主线程,直到它完成循环,同时,如果在 for 循环仍在运行时连接完成,那么您的委托代码将不会执行,直到循环完成后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)