Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 查找使用boost进程间共享内存的进程数_C++_Boost_Shared Memory_Boost Interprocess - Fatal编程技术网

C++ 查找使用boost进程间共享内存的进程数

C++ 查找使用boost进程间共享内存的进程数,c++,boost,shared-memory,boost-interprocess,C++,Boost,Shared Memory,Boost Interprocess,我有一个生产者进程,它将更新一个共享变量,许多消费者进程将读取共享变量的更新值 生产者只能在所有使用者都已读取的情况下更新共享变量。为了实现这一点,我需要知道可以动态变化的用户进程的数量。实现这一目标的最佳方式是什么 我可以尝试在使用者进程初始化时增加共享变量,在使用者进程关闭时减少共享变量,从而保持使用者进程的计数 但是,如果使用者进程被终止或崩溃,如何处理该场景。是否有办法找到共享内存的进程数?这里的问题是,如果你问两个C++开发者“什么是实现X的最好方法”,你会得到三个不同的答案。也许使用

我有一个生产者进程,它将更新一个共享变量,许多消费者进程将读取共享变量的更新值

生产者只能在所有使用者都已读取的情况下更新共享变量。为了实现这一点,我需要知道可以动态变化的用户进程的数量。实现这一目标的最佳方式是什么

我可以尝试在使用者进程初始化时增加共享变量,在使用者进程关闭时减少共享变量,从而保持使用者进程的计数


但是,如果使用者进程被终止或崩溃,如何处理该场景。是否有办法找到共享内存的进程数?

这里的问题是,如果你问两个C++开发者“什么是实现X的最好方法”,你会得到三个不同的答案。也许使用看门狗/控制器服务,或者是一个选择的领导者/法定人数,在一个只有心跳的对等模型中。或者认为如果一个进程意外死亡,它是一个不可恢复的错误。可能还能够设置错误处理程序,以便在某些情况下对关键中止执行“足够”的工作。我知道您希望问题简短。但它太开放了,无法与之合作。通常,人们会创建这样的系统,特别是如何启动客户流程。例如,在windows中,如果“leader”进程对每个进程调用CreateProcess,它可以轻松地跟踪它们。请参阅GetExitCodeProcess。