Я хочу общаться между разными платформами, используя межпроцессорное ускорение.
Я использую vc12 и повышаю 1.58 на Windows 7.
Мой код ниже - это очень простой пример, который должен работать. Но это не для связи между разными платформами ...
Если я создаю msm в x64 и открываю в win32, процесс зависает в блокировке функции try_based_lock в boost / int / sync / detail / common_algorithms.hpp
И наоборот: win32 create, x64 open: процесс вылетает на name_length в segment_manager_helper.hpp при попытке найти имя в индексе (priv_generic_find в segment_manager).
Проблема возникает в msm.find («Данные»).
#include <iostream>
#include <boost/interprocess/managed_shared_memory.hpp>
int main() {
namespace bip = boost::interprocess;
// open in WIN32, create in x64
#ifndef _WIN64
bip::managed_shared_memory msm(bip::open_only, "TestIPC");
#else
bip::shared_memory_object::remove("TestIPC");
bip::managed_shared_memory msm(bip::create_only, "TestIPC", 4096);
msm.construct<uint32_t>("Data")[1](10);
#endif
// Get Data and print it
auto data = msm.find<uint32_t>("Data");
if (data.second == 1) {
std::cout << *data.first << std::endl;
}
std::cin.ignore();
return 0;
}
У кого-нибудь есть в этом опыт?