gpt4 book ai didi

c++ - interprocess::named_upgradable_mutex - 如果进程被杀死则保持锁定

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

我正在使用 boost::interprocess::named_upgradable_mutex 来同步一些进程。

我正在使用 boost::interprocess::sharable_lockboost::interprocess::scoped_lock 来锁定互斥体。

在测试同步时,只要进程在工作并且正常关闭,它看起来就没问题。

但是,我注意到,如果一个进程在持有互斥量时被终止(例如通过 TaskManager),互斥量将保持锁定状态。

知道如何处理流程故障吗?

我考虑过使用 timed_lock() 以防万一……还有其他想法吗?

最佳答案

您正在处理症状而不是问题。互斥量的目的是允许进程或线程将共享数据置于不一致状态。如果进程在持有互斥量时死亡,则共享数据仍处于不一致状态。问题是如何将共享数据返回到一致状态,而不是如何解锁互斥锁。

当您将共享数据返回到一致状态时,在您返回到一致状态的数据中包含互斥锁或锁。最简单的方法是删除现有锁并创建一个新锁。您可能必须对共享数据执行相同的操作。

如果您真的需要这样做,我建议您可能没有使用正确的工具来完成这项工作。

关于c++ - interprocess::named_upgradable_mutex - 如果进程被杀死则保持锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8501888/

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