gpt4 book ai didi

c++ - C/C++ 中的跨平台线程/静态变量 fork

转载 作者:行者123 更新时间:2023-11-28 08:19:00 26 4
gpt4 key购买 nike

我正在尝试编写一个服务器程序,它可以跟踪某个对象的实例数。

目前我使用的是在对象的构造函数期间递增的静态 int:

class myObj{
public:
static int numOfInstances;
myObj();
};
int myObj::numOfInstances = 0;

myObj::myObj(){
this->numOfInstances = ++myObj::numOfInstaces
}

但我也想为每个连接 fork ,一个子进程处理每个连接,父进程不断监听新连接。

如果我使用 fork(),每个子进程都不知道新的连接,以及由于它们而创建的新对象。

我认为线程可能是一种解决方案,但我不确定是否为这种事情切断了线程(大多数程序将在线程中运行)。即使是,它也不在 ANSI 标准中,所以我宁愿找到一个使用 fork 的解决方案。

如果 fork 没有合理的解决方案,人们会推荐哪种线程解决方案?我正在为 Linux 写作,但我更喜欢跨平台解决方案。

最佳答案

多处理不是 C++ 标准的一部分。但是,如果您在 POSIX 系统上(您有 fork()),您可以从操作系统获取共享内存;查看 shmget() 函数系列。您将需要一些同步机制来访问共享内存(如互斥锁或信号量);还提供了这些。

我建议将 man shm_overviewman sem_overview 作为起点。

关于c++ - C/C++ 中的跨平台线程/静态变量 fork ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com