で 2 つの異なるアプリケーションを開発していC++
ます。これらのアプリケーションは、 を介して相互に通信しboost::interprocess::shared_memory_object
ます。今、私mutex
は2つの間で操作を同期するために変数が必要です.誰かがこれの最小限の例を提供できますか. 私のアプリケーションのコードは次のとおりです。
アプリ A:
boost::interprocess::shared_memory_object shm (boost::interprocess::create_only, "MySharedMemory", boost::interprocess::read_write);
shm.truncate (1024);
boost::interprocess::mapped_region region(shm,boost::interprocess::read_write);
std::strcpy(static_cast<char* >(region.get_address()), "WRITE\n");
/*I need to write some data to shared memory here. But line by line. i.e., I write first line. App B reads it. Then I write second line. For this i require mutex*/
アプリ B:
boost::interprocess::shared_memory_object shm (boost::interprocess::open_only, "MySharedMemory", boost::interprocess::read_write);
boost::interprocess::mapped_region region (shm, boost::interprocess::read_write);
char *str1 = static_cast<char*> (region.get_address());
char subbuff[5];
memcpy( subbuff, str1, 5 );
subbuff[5] = '\0';
while(strcmp(subbuff,"WRITE")!=0)
{
str1 = static_cast<char*> (region.get_address());
memcpy( subbuff, str1, 5 );
subbuff[5] = '\0';
}
/*Here I want to read the data written by App A line by line*/