gpt4 book ai didi

c++ - 有什么理由应该将 C++ 11+ std::mutex 声明为全局变量而不是作为函数参数传递给 std::thread 吗?

转载 作者:可可西里 更新时间:2023-11-01 18:29:06 28 4
gpt4 key购买 nike

我见过大多数使用 std::mutex 的示例,其中互斥量是全局的。我想知道这样做有什么具体原因吗?我有自己的程序,但我不这样做,只是将互斥锁作为 std::thread std::ref 传递。如果没有语言限制原因,使用全局变量不是不好的做法吗?

最佳答案

拥有全局变量是不好的做法,除非它不是。例如,std::cin 是全局的。

互斥量在某种意义上是全局的,无论您如何使它们可用。它们在不同的代码片段之间共享。所以你可以让它们成为全局变量,或者你可以将它们传递到调用链中,通过不使用它们的函数,直到你最终找到使用它们的人。这就是所谓的“流浪数据”,也是“不良做法”。选择你的毒药。

关于c++ - 有什么理由应该将 C++ 11+ std::mutex 声明为全局变量而不是作为函数参数传递给 std::thread 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44932714/

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