2017-10-10 126 views
1

我有一个共享内存区域被两个不同进程独占访问的场景。当我启动进程时,第一个进程成功锁定互斥锁,更新内存并解锁互斥锁。但我观察到,当第二个进程试图锁定它时,它仍处于死锁状态,等待互斥锁解锁。std ::共享内存中的互斥量不工作

对于第一个和第二个进程,互斥锁之间的时间差为10秒。

我正在使用std :: mutex。请告诉我我错过了什么。

+4

请尝试创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)并向我们显示。我不确定'std :: mutex'是否是在这里使用的正确的原语,它可能使用特定于进程的数据(以帮助inter-*线程*同步)。你应该可以使用你的平台跨进程互斥或信号代替。 –

+0

请提供您想要了解潜在错误的例子。 – Caduchon

+0

请尽可能提供我们的程序代码。 我们需要查看代码以告诉您是否存在错误 –

回答

4

一个std :: mutex实例只限于一个进程;它不能进行进程间同步/并发。它只能够同步父进程中的子线程。

请改用Boost或进程间同步库。

1

std :: mutex不支持进程间操作,但pthread库具有可以使用的进程间互斥体。示例here