iOS核心数据并发和其他后台队列

时间:2015-06-03 04:50:24

标签: ios multithreading core-data dispatch-async

我正在开发一个涉及protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<User>() .Map(map => { map.Properties(p => new { p.Username, p.Password, p.RoleId, p.IsActive, p.CreatedDate, p.ActivedDate }); map.ToTable("User"); }) .Map(map => { map.Properties(p => new { p.Username, p.Name }); map.ToTable("Admin"); }).Map(map => { map.Properties(p => new { p.Username, p.Name, p.Phone, p.Position }); map.ToTable("Staff"); }); base.OnModelCreating(modelBuilder); } 并发的iOS SDK。 用户案例是:

  1. 应用程序使用回调
  2. 在主队列上调用Core data api
  3. SDK's工人MOC是Core data。它需要在队列中创建模型并保存为持久性。
  4. 然后,SDK需要在后台进行一些冗长的操作,然后在主队列上运行回调;或
  5. MOC仍需要更新队列中的模型并运行回调 在主要队列上。
  6. enter image description here

    这是我的设计。从理论上讲,它应该有效。但是,它看起来有点复杂。还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

看起来有点复杂在实践中购买它可能是最简单,结构最好的方法。

从技术上讲,你只能使用2个队列(真正的线程)和NSConfinementConcurrencyType - 假设你只有1个后台线程,你的图表不是100%明确的 - 但它实际上使你的核心数据工作更棘手,更不明显。如果你总是使用私有队列上下文,那么你就知道在上下文中操作的所有内容都需要在块中,并且很容易看到任何错误。

如果您要让多个后台线程全部更新上下文,那么您的图表是最简单的选项。