c++ - 具有独立主机环境的线程 (c++)

标签 c++ multithreading environment-variables

我一直在研究这个主题,但我没有找到任何东西。

我有一个代码,我在其中循环一个函数,每次都在不同的线程(std::vector<std::shared_ptr<std::thread>>)中。

系统工作正常,但在这个函数中我必须为每个线程提供一个特定的环境变量值,并且知道 std::thread ,即使它独立运行,主机环境是共享的,也无法将此环境变量设置为独立值(如果我使用 setenv() 它会更改为所有线程)。

不幸的是,由于我的需要,我无法使用互斥体解决问题。

所以,这是我的问题。是否有任何类型的特定线程库(或 std::thread 或 boost 中的隐藏参数)允许我设置线程,为每个线程维护不同的环境变量?

谢谢

最佳答案

线程不可能有不同的环境变量(同一进程中的所有线程共享它们——没有办法解决)。

为什么你需要那样?如果它是一些配置值或类似的,那么你可以将它存储在 thread-local 中变量。

如果你真的需要一个单独的环境,你将不得不使用多进程(而不是线程)。

关于c++ - 具有独立主机环境的线程 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53557413/

相关文章:

c++ - 如何删除 ATL COM C++ 中的方法

c++ - 是否可以从测试类QT调用私有(private)函数

java - 线程转储中的 "Locked ownable synchronizers"是什么?

python - 尽管使用线程,函数执行还是卡住了 GUI

go - 如何在OSX上获取os env变量?

java - mac上设置java环境变量失败

javascript - heroku node.js 教程 - 将环境变量发送到其他 js 页面

c++ - 来自原始缓冲区的 Eigen::Map'd 矩阵给出 OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG

c++ - 在 C++ 中包装使用 void* 获取参数的 C 函数

multithreading - Delphi OmniThreadLibrary + OPC 客户端