gpt4 book ai didi

c++ - 在 C++ 线程中使用逗号和分号

转载 作者:行者123 更新时间:2023-11-30 01:35:49 27 4
gpt4 key购买 nike

我正在阅读 cppreference.com并遇到了这段代码:

int main()
{
std::thread t1(waits, 1), t2(waits, 2), t3(waits, 3), t4(signals);
t1.join(); t2.join(), t3.join(), t4.join();
}

我想知道最后一行是不是打错了。

不应该是这样吗

    int main()
{
std::thread t1(waits, 1), t2(waits, 2), t3(waits, 3), t4(signals);
t1.join(), t2.join(), t3.join(), t4.join();
}

还是没有区别?

最佳答案

没有区别。逗号运算符和分号都强制排序,唯一的区别在于如何处理每个表达式的结果。由于 join 有一个 void 返回类型,所以即使是微小的差异也无关紧要。无论哪种方式,您都可以按从左到右的顺序加入每个线程。

就我个人而言,我只使用分号,因为逗号运算符(在极少数情况下它在 for 循环增量步骤之外使用)意味着返回值很重要,但是 join void 返回类型使得逗号运算符的特性变得毫无意义; t1.join(); t2.join(); t3.join(); t4.join(); 将同样正确,并消除任何关于逗号运算符是否有问题的疑问。

关于c++ - 在 C++ 线程中使用逗号和分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218550/

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