使用共享库同步两个C ++进程

问题描述 投票:0回答:1

我正在开发一个C ++类(MyClass.cpp),将其编译为动态共享库(MyClass.so)。

此共享库将由在同一Linux机器上运行的两个不同应用程序使用。

它们是两个不同的应用程序。它不是多线程应用程序,也不是。

此类中有一个MyClass :: WriteHardware方法,必须相互排斥地执行,因此两个应用程序无法同时运行它。

实现两个不同进程之间的同步的正确和最简单的方法是什么,考虑到MyClass.so库是两者共同的?

在这种情况下,互斥锁是否有效,因为它不是多线程应用程序?

c++ synchronization shared-libraries
1个回答
0
投票

使您的MyClass::WriteHardware用需要此功能的应用程序并以正确的顺序编写“批处理”文件。作业完成后,将其从文件中删除。

该功能检查文件以查看它是否可以执行其工作,或者必须等待其他应用程序完成。

为了防止多个应用程序一次写入该文件,您可以使用另一个“锁定”文件。它的existencd表示“有人正在写批文件”


0
投票

我建议使用硬件锁。例如在您的MyClass :: WriteHardware内部,使用另一个硬件对象(即简单文件)作为锁的监视器。因此,MyClass :: WriteHardware必须首先检查是否可以通过写访问权限获取监视文件,然后在仍然保持该监视文件锁定的同时进行其处理,然后用其主要处理完成后将其释放。

© www.soinside.com 2019 - 2024. All rights reserved.