iOS - 并发访问内存资源

2024-04-01

我的应用程序从服务器、数据和数据描述符下载多个资源。这些由用户操作触发的下载可以同时执行,比如说一次最多 50 个下载。所有这些异步任务最终都会在内存中创建对象(例如,向数据结构添加叶子,例如向可变字典添加键或向数组添加对象)。我的问题是:这会导致稳定性问题吗?例如,如果多个同时执行的任务尝试将键添加到同一个字典中,我是否应该通过放置某种锁来处理这种情况?如果我实现一个在数组中查找图形元素的 for 循环,其他正在运行的任务是否有可能在循环“期间”更改数组内容?除了官方文档之外,还有关于多任务、多线程问题的参考资料或主要的一般方向吗?


取决于你如何处理下载 - 如果你使用 NSURLConnection 它会为你处理单独的线程/并发your代码是可重入的,因此您不必担心同时操作。 如果您创建自己的线程,则可能会遇到问题。

编辑: 您的代码在主线程(主运行循环)中运行,假设您有一个也在运行的 NSURLConnection,那么它将在单独的线程中运行。但是,处理连接过程中发生的事件的委托代码在运行循环中运行,而不是在其他线程中运行。这意味着您的代码一次只能执行一件事。连接成功的方法不会被调用同时与您的任何其他代码一样。如果您有一个 for 循环正在运行,那么它会阻塞您的主线程,直到它完成循环,同时,如果在 for 循环仍在运行时连接完成,那么您的委托代码将不会执行,直到循环完成后。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS - 并发访问内存资源 的相关文章

  • Cordova 2.4.0 或 2.5.0 或 2.6.0 和 requirejs

    Cordova 2 4 0 及更高版本支持 AMD 加载到 javascript 中 我特别希望将 Cordova 2 5 0 与最新版本的 RequireJS backbone jquery jquery mobile 一起使用 我还没有
  • 无法连接到 iTunes Store(获取应用内购买列表)

    我正在尝试从我的应用程序的应用程序内购买项目商店中获取列表 这是我所做的 安装了新的配置文件并启用了应用内购买 替换配置文件很棘手 但我认为我的设置是正确的 验证税务和银行信息是否正常 该应用程序已在商店出售 创建测试用户 在测试设备上以测
  • 如何找到键盘未覆盖的视图部分(UIModalPresenationStyleFormSheet)?

    我有一个视图控制器 显示带有 UITextView 的视图 并且我想在键盘出现时调整视图的大小 以便 UITextView 不会被键盘覆盖 我几乎在所有情况下都可以正常工作 据我所知 仅当视图控制器以 ModalPresentationSt
  • .showsPhysics 内存泄漏

    我最近花了 5 个小时尝试调试 Spritekit 应用程序中的内存泄漏 应用程序启动后 我注意到内存使用量略有上升 我花了 5 个小时中的 3 个小时挖掘参考资料 了解强与弱的关系ARC https developer apple com
  • C语言中使用POSIX使二进制信号量在多个进程(不是线程,仅限进程)之间共享

    我正在使用 C 语言中的 POSIX 使二进制信号量在多个进程 不是线程 仅进程 之间共享 如果我使用互斥体创建二进制信号量 typedef struct BIN SEMA pthread cond t cv cond variable u
  • 排序线程按照它们创建/启动的顺序运行

    我如何按照线程实例化的顺序对线程进行排序 我怎样才能让下面的程序按顺序打印数字1 10 public class ThreadOrdering public static void main String args class MyRunn
  • iOS、通用链接、Swift。 continueUserActivity 未调用

    我正在为我们的 iOS 应用程序实现通用链接 这是我的一小部分 AppDelegate private func application application UIApplication openURL url URL sourceApp
  • 删除行导致锁超时

    当我尝试从表中删除行时 我不断收到这些错误 这里的特殊情况是我可能同时运行5个进程 该表本身是一个 Innodb 表 约有 450 万行 我的 WHERE 子句中使用的列没有索引 其他指数按预期运行 这是在事务中完成的 首先删除记录 然后插
  • Open 方法仅使用完整路径打开文件 C++

    如果我写入完整路径 完整路径 roots txt 文件将打开 如果我只写文件名 roots txt 文件将无法打开 然而 roots txt 与 main cpp 位于同一文件夹中 我应该检查 XCode 上的任何设置吗 这是代码 stri
  • 错误域=kAFAssistantErrorDomain 代码=209“(空)”

    我面临着一个问题SFSpeechRecognizer 启动应用程序几秒钟后 我开始收到错误消息 错误域 kAFAssistantErrorDomain 代码 209 空 和 错误 域 kAFAssistantErrorDomain 代码 2
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • C++,如何在进程或线程之间共享数据

    我有一个运行两个不同操作的程序 我想在它们之间共享变量 目前 我正在使用线程而不是 fork 进程 但即使我将它们声明为易失性 我在共享变量时也遇到问题 我尝试使用 boost 做 boost thread collisions threa
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • 用户验证 Facebook 后未调用应用程序打开 Url 方法

    我已将 ios 应用程序中的 facebook 升级到 3 0 并使用提供的代码https developers facebook com docs howtos login with facebook using ios sdk http
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • 构建错误重复符号 arclite.o

    我正在尝试构建我的 Xcode 项目 但收到下面显示的错误 请帮我解决这个错误 提前谢谢您 duplicate symbol non lazy classes in Applications Xcode app Contents Devel
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 如何重新分配 R 星对象中的单元格/像素值

    我是 R 中的 star 包的新手 并且正在尝试弄清楚如何为二维 star 对象 栅格包中的栅格 中的单元格分配新值 使用光栅我可以执行以下操作 gt library raster gt library stars gt tif syste
  • 在 ThreeJS 中将 2D 鼠标坐标转换为世界 XZ 坐标

    我需要将鼠标屏幕坐标转换为 XZ 平面上的 ThreeJS 世界坐标 我发现这个工作代码可以将鼠标位置转换为 XY 世界坐标 但我不知道如何修改它以获取 XZ 坐标 var vector new THREE Vector3 vector s
  • 使用 MemoryCache 的多个实例

    我想使用以下方法向我的应用程序添加缓存功能System Runtime Caching命名空间 并且可能希望在多个位置和不同的上下文中使用缓存 为此 我想使用多个 MemoryCache 实例 然而 我看到here http msdn mi
  • 当我运行测试用例时,实体管理器已成功注入,但在运行 Web 应用程序时抛出 NullPointerException

    我有一个奇怪的问题 我正在使用 applicatioContext bean 使用 PersistenceContext 注入实体管理器 但问题是 当我运行测试用例时 实体管理器已成功注入 但在运行 Web 应用程序时会抛出 NullPoi
  • 有没有办法让 Roo 接受 StringIO 对象来代替文件?

    我正在尝试编写一些单元测试 其中涉及Roo http roo rubyforge org 读取 Excel 2007 文件 我的单元测试文件中有一个十六进制字符串的 Excel 文件 该文件又被输入到 StringIO 实例中 我不能简单地
  • React/Jest/Enzyme - 等待时间不够长

    我有一个等待多个承诺的函数 const function async gt await function1 await function2 await function3 我想测试 function3 被调用 it calls functi
  • 如何处理返回布尔值的 GraphQL 查询?

    需要在用户注册过程中检查电子邮件是否可用或已被占用 目标是使用 GraphQL API 服务器快速查询 并让它告诉我们电子邮件是否可用或已被占用 使用 GraphQL 处理简单布尔类型情况的一般最佳实践是什么 以下是我的想法 但我不确定这是
  • Linux 上跨共享库的单例的多个实例

    正如标题所提到的 我的问题很明显 我详细描述了该场景 在singleton h文件中有一个名为singleton的类 通过单例模式实现如下 singleton h Created on 2011 12 24 Author bourneli
  • 删除所有可观察集合?

    我正在寻找可以从 ObservableCollection 中删除所选项目的 Linq 方式 例如 List 的 RemoveAll 方法 我太新了 无法为自己创建扩展方法 有什么方法可以通过 Lambda 表达式从 ObservableC
  • 如何从 /proc/meminfo 计算系统内存使用情况(如 htop)

    运行htop命令以如下格式显示内存使用情况 1 92G 5 83G 问题 我应该如何解释取自的值 proc meminfo为了以编程方式计算所使用的内存 我正在寻找类似的东西 Linux 中以百分比形式准确计算 CPU 使用率 https
  • 从纵向旋转到横向时,iPad 布局会放大

    我有一个添加到 viewport 元标签 width device width initial scale 1 0 在 iPad 上 页面在横向模式下加载得很好 它可以很好地切换到纵向模式 当我将其旋转回横向模式时 它会放大页面 我必须将其
  • 如何从 Android 应用程序中的异步任务返回位图

    好的 这段代码就在 Android 开发者网站上 它设置了一个ImageView to a Bitmap class BitmapWorkerTask extends AsyncTask
  • Flink 的简单 hello world 示例

    我正在寻找 Apache flink 的 hello world 体验的最简单的示例 假设我刚刚在一个干净的盒子上安装了 flink 那么为了 让它做某事 我需要做的最低限度是什么 我意识到这很模糊 这里有一些例子 来自终端的三个 pyth
  • 解决这个问题的正则表达式是什么?

    我有一个 PHP 数组 其 URL 如下所示 http example com apps 1235554 http example com apps apple http example com apps 126734 http examp
  • 如何在 WP7 中分解 URI?

    是否有一种方法可以访问 WebBrowser 控件中的查询参数 或者我们是否必须手动分解字符串 例如 http www mysite com paramter 12345 我只需要访问参数的值 我知道在使用 xaml 页面时我们有 Quer
  • 为什么有两个类:视图模型和域模型?

    我知道使用域模型作为视图模型可能很糟糕 如果我的域模型有一个名为 IsAdmin 的属性 并且我有一个创建控制器操作来创建用户 那么有人可以更改我的表单并使其 POST IsAdmin true 表单值 即使我没有在视图中公开这样的文本字段
  • 将字符串转换为 Linq.Expressions 或使用字符串作为选择器?

    好吧 我现在有一个字符串 它具有要计算的表达式值 它有说值expr gt expr FieldName 所以我想使用这个字符串作为 Linq 表达式或任何其他查询方式 比如Select str 请帮帮我 虽然我个人没有使用过它 但动态 Li
  • 如何在分布式环境中使用 Estimator API 在 Tensorboard 中显示运行时统计信息

    本文 https www tensorflow org get started graph viz runtime statistics说明了如何将运行时统计添加到 Tensorboard run options tf RunOptions
  • Visual Studio Code:C++ 包含路径

    我目前正在使用https marketplace visualstudio com items itemName mitaki28 vscode clang https marketplace visualstudio com items
  • iOS - 并发访问内存资源

    我的应用程序从服务器 数据和数据描述符下载多个资源 这些由用户操作触发的下载可以同时执行 比如说一次最多 50 个下载 所有这些异步任务最终都会在内存中创建对象 例如 向数据结构添加叶子 例如向可变字典添加键或向数组添加对象 我的问题是 这