在多线程环境中访问数组会导致应用程序崩溃

Posted

技术标签:

【中文标题】在多线程环境中访问数组会导致应用程序崩溃【英文标题】:Accessing an array in multithreaded env causes app to crash 【发布时间】:2014-06-04 07:42:35 【问题描述】:

我有一个NSMutableArray 实例,它在我的应用程序的许多地方都得到了使用。该数组在我的应用程序的多线程环境中被修改。

我在清除这个数组时遇到了崩溃。我尝试过互斥锁、@synchronized 块和 GCD 来解决问题,但没有成功。

谁能建议我如何解决我的问题?

【问题讨论】:

请添加您的代码。 【参考方案1】:

也许您的数组已被某些代码读取。 尝试将数组声明为属性并使其成为原子:

    @property (atomic,strong) NSMutableArray *myArray;

【讨论】:

我添加了这个属性仍然会使应用程序崩溃【参考方案2】:

感谢您的回答,我已经解决了问题,应用程序崩溃问题不在于它使用的集合视图我使用执行批量更新的数组,通过删除批量更新我使用了重新加载数据

我的问题解决了

【讨论】:

以上是关于在多线程环境中访问数组会导致应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在多线程 C++ 程序中使用 std::vector 时应用程序崩溃

Windows线程同步详解

@synchronized 在 MRC 中不起作用,我的应用程序在多线程中崩溃

HttpClient在多线程环境下踩坑总结

什么是线程安全

Boost asio程序在多线程上崩溃