Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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++ 共享内存用户数_C++_C_Operating System_Ipc_Shared Memory - Fatal编程技术网

C++ 共享内存用户数

C++ 共享内存用户数,c++,c,operating-system,ipc,shared-memory,C++,C,Operating System,Ipc,Shared Memory,假设我有一个共享内存,通过mmap、shm_open或MapViewOfFile创建。我想知道现在有多少进程(甚至更好的线程)打开了内存。 是否有一些函数可以确定一个文件描述符/句柄现在有多少用户?或者类似的东西 背景: 我试着在一台计算机上做一个插件式的点对点通信。插件是音频VST,我需要它来进行时间同步。我的想法是使用共享内存,以便他们能够找到自己。(它们确实可以在不同的过程中启动)。但是为了正确操作,我需要知道实际打开共享内存的插件的数量。仅仅增加内存中的引用计数器是行不通的,因为插件的进

假设我有一个共享内存,通过mmap、shm_open或MapViewOfFile创建。我想知道现在有多少进程(甚至更好的线程)打开了内存。 是否有一些函数可以确定一个文件描述符/句柄现在有多少用户?或者类似的东西

背景: 我试着在一台计算机上做一个插件式的点对点通信。插件是音频VST,我需要它来进行时间同步。我的想法是使用共享内存,以便他们能够找到自己。(它们确实可以在不同的过程中启动)。但是为了正确操作,我需要知道实际打开共享内存的插件的数量。仅仅增加内存中的引用计数器是行不通的,因为插件的进程随时都可能崩溃,所以引用计数器不会减少。信号量也是如此

感兴趣的操作系统是Windows和Mac OS X。
也许可以通过使用“服务器”或协调过程来解决该任务,但这对插件来说确实很糟糕。。i、 e.它需要安装程序,并且很难解释用户为什么需要插件的系统服务。

Windows和OS X是非常不同的操作系统,具有非常不同的共享内存子系统、进程管理特征和线程实现。即使您指定了操作系统,您的问题也可能过于宽泛;如果你不这样做,它肯定太宽泛了。我很乐意找到至少一个特别的解决方案;然后,如果我幸运的话,我会通过关联为其他操作系统找到它。或者像“是否有一个windows | osx代替了一个”这样的问题不会改变你的问题过于宽泛的事实。以目前的形式,它不适合这样做。我想,如果我提出两个单独的问题,它不会更好。。。为什么你认为它太宽了。例如,询问如何在操作系统中打开文件是否过于宽泛?我同意有两种不同的方式取决于OS@JohnBollinger我不认为“如何获得共享内存块的用户数”这个问题太广泛了。