线程上下文中的环境变量
Environment variable in a thread context
我有一个程序,让我们称其为调度程序,该计划使用openMP在for for for loop上产生2个线程。这样的东西:
#pragma omp for num_threads(2)
for (int i = 0; i < 2; ++i) {
if (omp_get_thread() == 0)
setenv("VAR", 0);
else
setenv("VAR", 1);
system("./script.sh");
}
脚本执行将取决于该VAR值。如何使线程0中的VAR上下文与线程1不同,以便它们可以保留不同的值?
首先,除非有真正的原因,否则我会用shell或其他一些脚本语言编写调度程序。使用OpenMP是过度的,叉控制操作员&
应该可以正常工作。
其次,每个外壳都有自己的环境(哪个孩子的继承),所以我只是通过GOMP_CPU_BIND
的所需值(实际上,您可能是指GOMP_CPU_AFFINITY
,因为前者似乎没有记录在任何地方?)命令行参数到script.sh
,然后在script.sh
中导出GOMP_CPU_AFFINITY
,并具有相应的值。
为总结,您会写出类似的内容:
scheduler.sh:
#!/bin/sh
./script.sh 1 &
./script.sh 2 &
script.sh:
#!/bin/sh
export GOMP_CPU_AFFINITY=$1
./myprog
相关文章:
- 枚举环境变量的惯用C++14/C++17方法
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 定义C++新的环境变量并在 bat 文件中使用它
- docker 构建失败:无法设置环境变量
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- C++环境变量
- 在编译时为运行时设置环境变量
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 访问 PlatformIO 中的外部环境变量
- WSL 看不到环境变量
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 注册 TBB 的环境变量
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- CMake 看不到SDL2_PATH环境变量 (Windows)
- 跨语言共享环境变量
- 什么是运行英特尔线程构建模块的 XCode 8 环境变量
- 在运行时将更改的环境变量应用于 QApplication
- 在C++程序中找不到环境变量 UID
- Visual Studio 2017 C++,如何定义一个"环境变量"'Additional Library Directory'?
- 如何使用boost :: program_options提取环境变量