C++ nodejsc++;共享对象
概述:C++ nodejsc++;共享对象,c++,node.js,C++,Node.js,概述: 我有一个NoDEJS服务器,里面有几个C++模块,执行一个整体的“作业”。这些模块中的一些对象(C++对象,比如“单例”)是公共的,它们在初始化后的状态应该在每个模块之间共享。这些对象的初始化必须在服务器启动期间完成一次 示例: A、B -单独的C++模块,它们应该作为一个作业执行 x,y,z共享C++对象(可能很多) 服务器接收(http)请求,并使用 x、y和z (http)响应从A发送到客户端 服务器接收另一个(http)请求,并在B中使用x、y和z对其进行处理 (http)响
我有一个NoDEJS服务器,里面有几个C++模块,执行一个整体的“作业”。这些模块中的一些对象(C++对象,比如“单例”)是公共的,它们在初始化后的状态应该在每个模块之间共享。这些对象的初始化必须在服务器启动期间完成一次
示例:A、B -单独的C++模块,它们应该作为一个作业执行 x,y,z共享C++对象(可能很多)
你能告诉我在所有C++模块之间是否有一些已知的初始化和共享这些对象的最佳实践?
<> NodeJS某个C++模块的生命周期是什么?何时从内存中删除它们?如果您使用的是boost库,则可以创建可在模块之间共享的内存段 例如,您希望模块A和B之间共享100
int
然后模块A的代码将如下所示(为了简洁起见,省略了错误检查):
希望这有帮助
// Shared memory creation
shared_memory_object shm (create_only, "My100INTs", read_write);
shm.truncate(100 * sizeof(int));
mapped_region region(shm, read_write);
// Get the address of the first element
int* theMemory = static_cast<int*>(region.get_address());
// Initialization Code
for (int i = 0; i < 100; i++) {
*(theMemory + i) = i;
}
// Open the previously created shared memory
shared_memory_object shm (open_only, "My100INTs", read_write);
mapped_region region(shm, read_write);
// Get the address of the first element
int* theMemory = static_cast<int*>(region.get_address());
// Do modification
for (int i = 0; i < 100; i++) {
*(theMemory + i) *= 2;
}
delete region;
remove("My100INTs");