gpt4 book ai didi

ios - Realm 数据库锁定?

转载 作者:可可西里 更新时间:2023-11-01 01:35:54 26 4
gpt4 key购买 nike

在同步时,我用服务器的数据覆盖我所有的本地数据。为此,我首先为所有对象调用 realm.delete(realm.objects(MyObj))。然后我用 realm.add(obj, update: false) 保存响应的对象。一切都在一次交易中。负载可能需要一段时间才能处理,但它不足以证明实现分页是合理的。

用户在这个过程中能否正常使用应用?他们能否存储在交易清算部分删除的新项目,或者会在添加部分触发错误或被覆盖的新项目?如果是,我该如何避免这种情况?

最佳答案

Realm 使用多版本并发控制算法。这使用锁来确保独占写入,而其他线程可以继续读取以前版本的数据。我们有一个 article on our blog ,它更深入地解释了它是如何工作的。

请注意,您在此处尝试解决的问题并非微不足道的挑战。

Can they store new items that are deleted in the clearing part of the transaction, or that would trigger an error or be overwritten during the adding part?

当后台事务正在进行时,其他写入事务将被阻止。如果您从主线程执行这些写入,您将阻塞主线程。如果您从后台线程执行它们,它们将排队并在您的同步事务完成后执行。

一开始被删除的对象将变得不可访问(您可以通过invalidated 检查),因为写入事务总是在最新版本上运行。如果您的对象在同步操作中具有一致的主键,您可以利用这些来重新获取它们并重新对新实例进行所有修改。但请注意,在开始写入事务之前,您需要将主键(和所有其他对象数据)存储到内存中,这意味着隐式刷新。

关于ios - Realm 数据库锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com