我在orientDB中创建了一个系统,在某些情况下,我需要在系统中创建多个线程,将边添加到某个顶点,并更新该顶点的属性。我的问题是,有没有什么方法可以阻止这个顶点上的操作,直到其他线程完成一个代码块,这个块既可以读也可以写?
我的例子我有酒店的顶点和可用房间的数量作为属性,任何预订,我的代码将按照以下顺序工作
1-确保剩余房间大小大于1
2-创建客户顶点的边
3-将可用房间数减少1
发布于 2016-10-10 20:25:44
OrientDB有一个乐观的并发控制系统,但在极少的记录上进行非常高的并发更新时,它可以更有效地锁定记录,以避免重试。您可以自己同步访问,也可以使用存储API进行同步。请注意,这只适用于非远程数据库。
((OStorageEmbedded)db.getStorage()).acquireWriteLock(final ORID iRid)
((OStorageEmbedded)db.getStorage()).acquireSharedLock(final ORID iRid)
((OStorageEmbedded)db.getStorage()).releaseWriteLock(final ORID iRid)
((OStorageEmbedded)db.getStorage()).releaseSharedLock(final ORID iRid)源代码和用法示例可以在official documentation上找到。
https://stackoverflow.com/questions/39958070
复制相似问题