Потоки с независимыми средами хоста (c ++) - PullRequest
0 голосов
/ 30 ноября 2018

Я занимался исследованием этой темы, но ничего не нашел.

У меня есть код, в котором я зацикливаю функцию, которая каждый раз находится в другом потоке (std::vector<std::shared_ptr<std::thread>>).

Система работает правильно, но внутри этой функции я должен задать конкретное значение переменной среды для каждого потока, и зная, что std::thread, даже если он работает независимо, среда хоста является общей,невозможно установить для этой переменной среды независимое значение (если я использую setenv(), она изменяется на все потоки).

К сожалению, из-за характера моих потребностей я не могу решить проблему с помощью мьютекса.

Итак, это мой вопрос.Существует ли какая-либо конкретная библиотека потоков (или скрытый параметр в std::thread или boost), который позволяет мне устанавливать потоки, поддерживающие разные переменные окружения для каждой из них?.

Спасибо

1 Ответ

0 голосов
/ 30 ноября 2018

Потоки не могут иметь разные переменные окружения (все потоки в одном и том же процессе совместно используют их - нет никакого способа обойти это).

Зачем вам это нужно таким образом?если это какое-либо значение конфигурации или подобное, вы можете сохранить его в переменной thread-local .

Если вам действительно нужна отдельная среда, у вас будетиспользовать несколько процессов (вместо потоков).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...