我使用boost的named_semaphore用于IPC。我们有一个程序/进程(父)调用另一个(子)。如果父母被杀死(杀死-9情景),我们希望孩子完成其工作并退出,并且父母应该在开始等待直到孩子发出信号时(通过boost :: named_semaphore)。
这一切都运行得很好,除了在Windows上的另一天我清除事件日志(它发生...)以找出boost(获取内核持久性共享内存)使用共享内存时我非常惊讶,以及它们用于此目的的文件夹将其名称用作从事件日志中获取(默认情况下)的时间戳(仅限Windows)。
当然,我还没有完全阅读他们的IPC文档(也许我坚信封装......),我特别没有意识到named_semaphore对shared_memory的依赖......(封装)。
这个/在事件日志from here中使用启动时间的默认行为对我来说太脆弱了。他们确实提供了一些选择,但我不确定哪个是最强大的,同时需要我最少量的工作。具体来说,什么程度的健壮性定义了BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME,为什么这不是默认值?
我假设如果我使用策略,父进程和子进程必须使用完全相同的策略,否则named_sema不会工作?
欢迎任何想法。