我正在编写一个服务器客户端应用程序,我想使用boost进程间共享内存API来实现它。客户端进程将一个整数键写入共享内存,服务器读取该键,执行一些工作并写入结果变量是相同的共享内存。 我有多个客户端进程和一次运行的单个服务器进程。
当客户端进程开始读取结果然后它不知道它是否是其相应键的结果时,问题就出现了。它最终读取不同子进程的结果。所以,我想知道boost中是否有任何同步技术可以告诉子进程只有在共享内存中有相应的结果时才能读取。 现在我正在使用信号量进行同步
struct shared_memory_buffer {
shared_memory_buffer(): writer(1), reader(0), key(0){}
interprocess_semaphore writer, reader;
int key;
int result;
};