gpt4 book ai didi

c++ - 分布式锁

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:22 30 4
gpt4 key购买 nike

我有 3 个进程(P1、P2 和 P3),每个进程都在不同的机器上运行。这些进程共享数据库中的 3 个表(T1、T2 和 T3)。在更新这些表时,我需要同时保持 3 个表的原子性(要么修改所有表,要么不修改任何表)。我的数据库不提供一次更新多个表的锁。

如何有效地执行此操作?此问题的常用解决方案是什么。

我可以在数据库中创建一个单独的表来充当互斥量。当任何进程正在运行时写入 1,当进程退出时写入 0。但是即使采用这种方案,当进程1刚刚释放互斥量时,进程2和进程3也可以同时进入临界区。

我可以使用双锁检查来解决问题。

这个问题有没有更简单的解决方案?任何库中是否已经存在任何 API?

最佳答案

如果您使用存储在 db 中的互斥锁来实现它,我认为它的效率会降低。因为数据库写入比 Mutexes 这样的操作系统变量需要更多的时间。

如果您从客户端实现,并且可以与客户端进程通信,您可以为每个进程的表创建独立的互斥体。并实现你的互斥锁功能来锁定你的表编辑,将锁定消息发送到其余进程中的其他 2 个表。

只有当其他两个进程成功锁定他们的表时才应该进行锁定。

关于c++ - 分布式锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48394701/

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