我一直在研究这个主题,但我没有找到任何东西。
我有一个代码,我在其中循环一个函数,每次都在不同的线程(std::vector<std::shared_ptr<std::thread>>
)中。
系统工作正常,但在这个函数中我必须为每个线程提供一个特定的环境变量值,并且知道 std::thread
,即使它独立运行,主机环境是共享的,也无法将此环境变量设置为独立值(如果我使用 setenv()
它会更改为所有线程)。
不幸的是,由于我的需要,我无法使用互斥体解决问题。
所以,这是我的问题。是否有任何类型的特定线程库(或 std::thread
或 boost 中的隐藏参数)允许我设置线程,为每个线程维护不同的环境变量?
谢谢
最佳答案
线程不可能有不同的环境变量(同一进程中的所有线程共享它们——没有办法解决)。
为什么你需要那样?如果它是一些配置值或类似的,那么你可以将它存储在 thread-local 中变量。
如果你真的需要一个单独的环境,你将不得不使用多进程(而不是线程)。
关于c++ - 具有独立主机环境的线程 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53557413/