gpt4 book ai didi

c++ - 带线程的运算符++(前缀)

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:50 27 4
gpt4 key购买 nike

friend 之间打赌。sum 变量定义为全局变量。我们有 2 个线程在循环 1..100 上运行并在每个循环中将 sum 递增 1。

打印什么?“和=”?

int sum = 0;

void func(){
for (int i=0 ; i<= 100; i++){
sum++;
}
}

int main(){

t1 = Thread(func);
t2 = Thread(func);

t1.start();
t2.start();

t1.join();
t2.join();

cout << "sum = " << sum;

return 0;

}

最佳答案

这是未定义的行为,所以我要说 42. 当您有多个线程访问共享变量并且至少其中一个是写入器时,您需要同步。如果你没有那个同步,那么你有未定义的行为,我们无法告诉你会发生什么。

你可以使用 std::mutex或者你可以使用 std::atomic获得同步并定义程序行为。

关于c++ - 带线程的运算符++(前缀),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568740/

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