【发布时间】:2018-03-21 15:16:16
【问题描述】:
我有一个场景,共享内存区域由两个不同的进程独占访问。当我启动进程时,第一个进程成功锁定互斥锁,更新内存并解锁互斥锁。但是我观察到,当第二个进程尝试加锁时,它仍然处于死锁状态,等待互斥锁解锁。
第一个进程和第二个进程互斥锁的时间差是10s。
我正在使用 std::mutex。请告诉我我错过了什么。
【问题讨论】:
-
请尝试创建一个Minimal, Complete, and Verifiable Example 并向我们展示。而且我不确定
std::mutex是在这里使用的正确原语,它可能使用特定于进程的数据(以帮助线程间 同步)。您应该改为使用您的平台跨进程互斥锁或信号量。 -
请提供一个示例,说明您正在尝试做什么,以便更好地了解您的潜在错误。
-
请向我们提供尽可能少的程序代码。我们需要看代码告诉你是否有错误
-
std::mutex 不是进程间互斥锁。您可能需要考虑使用 boost.interprocess 库。
标签: c++ multithreading mutex shared-memory stdmutex