0

我想使用 mysql 行级锁。我无法锁定整个表。我想避免两个进程同时为服务器处理两个不同的消息。我认为我可以调用一些表: server_lock如果一个进程开始在服务器上工作,它将在表中插入一行。

这种方法的问题是,如果应用程序崩溃。我们需要手动解除锁定。如果应用程序崩溃,有没有办法可以释放行级锁和锁?

编辑 我使用 C++ 作为语言。我的应用程序类似于消息队列。但不同之处在于,每个队列都有一个进程填充两个队列。动作之后,如果动作属于同一个对象并且两者都在处理同一个对象,则可能会导致错误的数据。所以我想要一个锁定机制 b/w 这两个队列,这样两个处理器就不会同时修改同一个对象。

4

1 回答 1

0

我可以想到两种方法:

  • 在您删除锁的程序上实现一些错误处理程序。在不了解您的程序的情况下,很难说如何执行此操作,但大多数语言都有一些方法可以在崩溃退出之前完成一些工作。这是危险的,因为当事情不正确时会发生崩溃。如果你继续做任何工作,你可能会损坏数据库或类似的东西。
  • 定期更新锁。在您的程序上添加一个定期重新获取锁的线程,或者在您正在执行的某个循环中重新获取锁。然后,当一个锁有一段时间没有更新时,你就知道它属于一个崩溃的程序。
于 2012-12-10T14:47:58.890 回答