Windows 是否提供可以放置在内存映射文件中并跨多个进程使用的任何类型的互斥体?
理想情况下,它必须是完全自包含的,以便它可以在文件中独立存在,即使在重新启动时也是如此。 此外,如果我只是在没有进程运行时手动删除文件,则不会泄漏任何资源。
如果可能,该解决方案还应提供随附的“条件”概念,该概念也应该是一个可以位于共享内存映射文件中的对象。
简而言之,我需要类似于具有 SHARED 属性的 PTHREADS 互斥量的东西。
据我所知,简单地使用 PTHREADS 互斥锁是不可能的,因为 PTHREADS 的 Windows 端口不支持 SHARED 属性。
最佳答案
要共享一个同步对象,给它起一个名字,并在创建对象时在每个进程中使用相同的名字。
以下同步对象可以通过这种方式在进程之间共享:
Critical sections无法共享,但速度更快。
测试或等待这些对象是通过 wait 系列函数完成的,通常是 WaitForMultipleObjects .
关于c++ - 在 C/C++ 中将互斥锁放入 Windows 上的内存映射文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401973/