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

C++ 具有独立主机环境(c+;+;)的线程,c++,multithreading,environment-variables,C++,Multithreading,Environment Variables,我一直在研究这个话题,但没有发现任何东西 我有一个代码,其中我循环一个函数,每次都在不同的线程中(std::vector) 系统工作正常,但在该函数中,我必须为每个线程指定一个特定的环境变量值,并且知道std::thread,即使它独立运行,主机环境也是共享的,也无法将该环境变量设置为独立值(如果我使用setenv()它将更改为所有线程) 不幸的是,由于我需求的性质,我无法使用互斥来解决这个问题 这是我的问题。有任何类型的特定线程库(或std::thread或boost中的隐藏参数),允许我为每

我一直在研究这个话题,但没有发现任何东西

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

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

不幸的是,由于我需求的性质,我无法使用互斥来解决这个问题

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


多亏了

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

你为什么需要这样?如果是某个配置值或类似值,则可以将其存储在变量中


如果您真的需要一个单独的环境,那么您必须使用多个进程(而不是线程)。

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

你为什么需要这样?如果是某个配置值或类似值,则可以将其存储在变量中


如果您确实需要一个单独的环境,那么您必须使用多个进程(而不是线程)。

为什么每个线程需要不同的环境变量?真正需要解决的问题是什么?你有没有想过用进程而不是线程?哦,为什么有指向线程的指针?你不能有一个普通的
std::vector
?您真的拥有线程对象的共享所有权吗(如果您从资源所有权的角度来看智能指针)?我需要不同的环境变量,因为我将程序作为一个服务器运行,该服务器具有不同的客户端(每个客户端都有不同的端口),并且必须链接这些客户端。我有办法在不同的客户端之间重新连接,但这是一个相当缓慢的过程,不允许我对每个客户端进行快速更新。之所以使用std::shared_ptr,是因为我重用了脚本将使用的框架的部分代码。我仍然认为这里根本不需要环境变量。线程将读取或写入(或同时读取和/或写入)环境吗?除非将其用作一种线程间通信方法,或者需要启动继承环境的子进程,否则编写就没有意义。只有读取也没有意义,因为在创建进程时,环境只设置一次,不能在外部修改,然后在进程中的所有线程之间共享。那么,您希望在环境中存储什么样的数据?当你创建数据时,你不能把数据传递给每个线程(用C++和 STD::线程< /COD>很容易将参数传递给线程函数)?为什么每个线程都需要不同的环境变量?真正需要解决的问题是什么?你有没有想过用进程而不是线程?哦,为什么有指向线程的指针?你不能有一个普通的
std::vector
?您真的拥有线程对象的共享所有权吗(如果您从资源所有权的角度来看智能指针)?我需要不同的环境变量,因为我将程序作为一个服务器运行,该服务器具有不同的客户端(每个客户端都有不同的端口),并且必须链接这些客户端。我有办法在不同的客户端之间重新连接,但这是一个相当缓慢的过程,不允许我对每个客户端进行快速更新。之所以使用std::shared_ptr,是因为我重用了脚本将使用的框架的部分代码。我仍然认为这里根本不需要环境变量。线程将读取或写入(或同时读取和/或写入)环境吗?除非将其用作一种线程间通信方法,或者需要启动继承环境的子进程,否则编写就没有意义。只有读取也没有意义,因为在创建进程时,环境只设置一次,不能在外部修改,然后在进程中的所有线程之间共享。那么,您希望在环境中存储什么样的数据?当你创建数据时,你不能把数据传递给每个线程(用C++和很容易将参数传递给线程函数)吗?这就是我所想的。无论如何,谢谢你。我看到了几种使用sh文件生成多进程的解决方案,但我希望在生成特定数量的复制副本时,能有更多的dinamism。无论如何,谢谢你。我看到了几种使用sh文件生成多进程的解决方案,但我希望在生成特定数量的复制副本时,能够使用一些更具dinamism的解决方案。