Multithreading 从多线程开始的beginWriteTransaction
根据beginWriteTransaction方法中的文档 一次只能打开一个写事务。写事务 无法嵌套,正在尝试在上开始写入事务 已在写入事务中的RLMRealm将抛出 例外。从中的RLMRealm实例调用beginWriteTransaction 其他线程将阻塞,直到当前写入事务结束 完成 但当我查看代码时,我发现了下一个:Multithreading 从多线程开始的beginWriteTransaction,multithreading,realm,Multithreading,Realm,根据beginWriteTransaction方法中的文档 一次只能打开一个写事务。写事务 无法嵌套,正在尝试在上开始写入事务 已在写入事务中的RLMRealm将抛出 例外。从中的RLMRealm实例调用beginWriteTransaction 其他线程将阻塞,直到当前写入事务结束 完成 但当我查看代码时,我发现了下一个: void Realm::begin_transaction() { check_read_write(this); verify_thread(); i
void Realm::begin_transaction()
{
check_read_write(this);
verify_thread();
if (is_in_transaction()) {
throw InvalidTransactionException("The Realm is already in a write transaction");
}
// make sure we have a read transaction
read_group();
transaction::begin(*m_shared_group, m_binding_context.get());
}
你能解释一下什么时候符合条件吗
从其他中的RLMRealm实例调用beginWriteTransaction
线程将阻塞,直到当前写入事务完成
最后一个调用将导致一种方法,它将离开中间跨平台C++ ++ API级别,并深入到我们的内部存储引擎,在这里它使用互斥体来协调进程和线程之间的独占访问。
一旦获得了互斥体,它就被保存到提交事务或被取消。 < P>最后一个调用将导致一个方法,它将离开中间跨平台C++ API级别,并深入到我们的内部存储引擎,在这里使用互斥体来协调进程和线程之间的独占访问。
一旦获得此互斥锁,它将一直保持,直到提交或取消写入事务。您有什么解决方案吗?当我尝试从两个线程写入默认域时,如何解决此问题?现在我只有一个解决方案:1)
dispatch\u queue\t serialQueue=dispatch\u queue\u create(“com.unique.name.queue”,dispatch\u queue\u SERIAL)
2)并将所有事务打包到块中。当我尝试从两个线程写入默认域时,您有什么解决方案吗?现在我只有一个解决方案:1)dispatch\u queue\t serialQueue=dispatch\u queue\u create(“com.unique.name.queue”,dispatch\u queue\u SERIAL)
2)并将所有事务包装在块中。