в данный момент я пытаюсь настроить проект с поддержкой interprocess.Цель состоит в том, чтобы держать стол постоянным доступным.Таблица насчитывает около 30 строк Milion, и требуется много времени для импорта данных в каждую отдельную программу, которая нуждается в данных.
Данные, которые я хочу предоставить, взяты из базы данных MSSQL и имеют разные типы полей, такие как бит , int , nvarchar (5) или datetime .
В наших текущих программах мы импортируем nvarchar (5) как CString и datetime как TIMESTAMP_STRUCT.При настройке моего проекта я не смог найти способ поместить CString или TIMESTAMP_STRUCT в разделяемую память, потому что нет предоставленных контейнеров.
Ниже приведен минимальный пример:
#include <afxdb.h>
#include "stdafx.h"
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/containers/string.hpp>
#include <string>
using namespace boost::interprocess;
int main()
{
//Teststruct to test shared memory
struct Teststruct
{
int ID;
string name;
int Price;
};
//Testdata to test shared memory
Teststruct Testdata;
Testdata.ID = 1;
Testdata.name = "NAME";
Testdata.Price = 10;
typedef allocator<Teststruct, managed_shared_memory::segment_manager> SharedMemAllo;
typedef vector<Teststruct, SharedMemAllo> MyVector;
//delete SharedMem if already existing
shared_memory_object::remove("MySharedMemory");
//create SharedMem with given size
managed_shared_memory segment(create_only, "MySharedMemory", 1000);
const SharedMemAllo alloc_inst(segment.get_segment_manager());
MyVector *myvector = segment.construct<MyVector>("MyVector")(alloc_inst);
for (int i = 0; i < 10; ++i) //Insert data in the vector
{
Testdata.ID = i;
myvector->push_back(Testdata);
}
return 0;
};
Я ищу возможность использовать struct Testdata2 (ниже) и хранить CStrings и TIMESTAMP_STRUCT в моей общей памяти.В этом случае нам не нужно менять все программы, которые работают с CString.
struct Teststruct_2
{
int ID;
CString name;
int Price;
TIMESTAMP_STRUCT date;
};
Знаете ли вы какой-нибудь способ решения этой проблемы?
С уважением