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::vector
?您真的拥有线程对象的共享所有权吗(如果您从资源所有权的角度来看智能指针)?我需要不同的环境变量,因为我将程序作为一个服务器运行,该服务器具有不同的客户端(每个客户端都有不同的端口),并且必须链接这些客户端。我有办法在不同的客户端之间重新连接,但这是一个相当缓慢的过程,不允许我对每个客户端进行快速更新。之所以使用std::shared_ptr,是因为我重用了脚本将使用的框架的部分代码。我仍然认为这里根本不需要环境变量。线程将读取或写入(或同时读取和/或写入)环境吗?除非将其用作一种线程间通信方法,或者需要启动继承环境的子进程,否则编写就没有意义。只有读取也没有意义,因为在创建进程时,环境只设置一次,不能在外部修改,然后在进程中的所有线程之间共享。那么,您希望在环境中存储什么样的数据?当你创建数据时,你不能把数据传递给每个线程(用C++和