gpt4 book ai didi

c++ - lib 中的 static 对所有对象都是相同的值吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:21 25 4
gpt4 key购买 nike

假设我正在尝试生成一个进程特定的 id:

class TestLib
{
public:
static int n;

static int generate_id(){
srand (time(NULL));
if (n == 0)
n = rand() % 10 + 1;

return n;
};
};

我有包含 TestLib 的库 A 和 B:

class TEST_A
{
public:
static void print() {
std::cout << "A" << TestLib::generate_id() << std::endl;
};
};

class TEST_B
{
public:
static void print() {
std::cout << "B" << TestLib::generate_id() << std::endl;
};
};

我能保证使用 A 和 B 的任何单个进程都具有相同的 ID 吗?

如果我静态链接库,这会改变吗?

我已经在 linux-x86 中使用共享对象对此进行了测试,但我不确定这在原则上有多安全。

最佳答案

不,除非你的程序是单线程的,否则不能保证。否则,对 generate_id 的两个并发调用可能会覆盖彼此的结果。

关于c++ - lib 中的 static 对所有对象都是相同的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10544010/

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