2017-01-04 28 views
1

看起来我可以通过API IgniteCache # public Lock lock(K key);获得分布式锁。IgniteCache.lock可以用作分布式锁

我想确认的一件事是,当一个进程从此对象获取锁定,但在进程死亡之前未释放此锁定时,Ignite将确保释放死进程保留的锁定将被释放,所以等待锁的其他进程将有机会获得锁?

回答

2

点燃#的ReentrantLock方法有布尔标志failoverSafe这意味着你想要什么。如果节点离开了已经获得锁的拓扑,那么锁将被无声释放。

+0

Ignite Cache#lock(key)具有相同的故障转移语义。但请记住,它仅适用于事务性缓存。 –

+0

谢谢@尼古拉,我明白了。听起来'Ignite#reentrantLock'不是针对缓存创建的,所以这个API没有事务性缓存问题。 – Tom

+0

@你是对的。 'Ignite#reentrantLock'创建单独的同步原语。 'Ignite Cache.lock(key)'类似于一个关键的悲观事务。 –