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++对象(可能很多)

  • 服务器接收(http)请求,并使用 xyz
  • (http)响应从A发送到客户端
  • 服务器接收另一个(http)请求,并在B中使用xyz对其进行处理
  • (http)响应从B发送到客户端
  • 问题:

    你能告诉我在所有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");