我正在使用boost :: shared_memory_object进行IPC。我有一个客户端和服务器。我使用两个消息队列。一个用于向服务器发送请求,另一个用于从服务器接收回复。它是一种异步协议。我的问题是我不知道如何在发生故障时安全地删除shared_memory_objects。请考虑以下情况:
这里所有的地狱都破裂了。有时写入成功,有时会崩溃。谁知道在删除消息队列之后是否有其他进程在同一个内存地址上创建了新的共享内存对象......
显然,如果客户端认为服务器已关闭并且删除了队列,则尝试读取/写入队列的服务器线程可能会崩溃(或损坏内存)。