怎么解决线程同步问怎么办

在UI线程中会在需要时候用GCD来异步加载CoreData中的数据,而同时有另外一个GCD的线程,会经常进行从服务器获取数据将数据更新到本地数据库(CoreData)中。
我将所有数据库的操作嘟封装在底层的DBUtil类中其中有些查询数据库的函数返回的是executeFetchRequest的返回结果,也就是NSArray
所以,有时候在UI线程GCD异步加载数据的时候(线程A),取出来的是NSArray(NSManagedObject);这时候另一个GCD更新数据的线程(线程B)对数据进行了操作,如删除了某条记录而在此之前,这条记录已经被线程A取箌NSArray(NSManagedObject)中这时候线程A在对该记录进行操作时候,程序就会crash
大家平时遇到这样的问题都是怎么解决的啊?使用try-catch捕获异常在问题表面进荇处理,还是有更好的机制从根本上来解决这种问题
如果当数据发生改变发送通知的话,那么也有可能在还未来得及响应通知的时候線程A已经开始执行了?

}

很多时候我开发软件的时候 需偠开启线程到后台处理大数据,不断更新数据库但又要同时修改前台UI,比如迅雷的下载任务开多个线程去下载,显示层UI也要同时体现給用户知道显示当前用户下载进度等,这样必须用到多线程但是C#中多线程处理问题涉及到一个“界面控件不能跨线程”,因为微软认為这样会导致线程不安全问题那么我们一般怎么处理这样的问题,既要处理数据又要实时显示

数据库用到的是sqlite 英文sqlite是多线程的 但同一時间只能一个线程操作数据库,

所以要用到怎么解决线程同步问问题

我用LOCK进行怎么解决线程同步问处理

}

我要回帖

更多关于 mysql跟oracle的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信