编辑
GetCurrentProcessId() 和 getpid() 返回不同的值......但 boost 没有。
原始问题
我正在编写一个节点插件来添加一个本地本机缓存,以便在作为集群运行时与快速服务器一起使用,以拥有一个公共缓存。我message_queue
在进程之间使用 boost 的 IPC,并且需要唯一标识发送请求的进程。Boost 提供boost::interprocess::ipcdetail::get_current_process_id
了获取当前进程 id,但在主进程和子进程中返回相同的进程 id。我认为我说子进程也有自己的唯一 ID 是正确的。那么这里到底发生了什么:
回购(这是一个最小的可重复性):https ://github.com/t348575/cluster-mem-shared
输出
00007FF95BDC2310
00007FF95BDC2310
00007FF95BDC2310
00007FF95BDC2310
示例js测试文件
require('dotenv').config();
const cluster = require('cluster');
const cache = new (require('./dist/index')).ClusterMemShared(process.env.MODE);
if (cluster.isMaster) {
cluster.fork();
cluster.fork();
cluster.fork();
}
我在 c++ 返回给 js 的类的构造函数中打印这个
std::cout << bip::ipcdetail::get_current_process_id << std::endl;