Код: Выделить всё
int main() {
char const* ompi_size_cstr = std::getenv("OMPI_COMM_WORLD_SIZE");
...
}
< /code>
(не так уж и значение переменной). < /p>
Но теперь я получаю это предупреждение: < /p>
/builds/user/mpi3/environment.hpp:49:51: error: function is not thread safe [concurrency-mt-unsafe,-warnings-as-errors]
const char* ompi_size_cstr = std::getenv("OMPI_COMM_WORLD_SIZE");
, но, возможно, предупреждение о том, что в рамках сцена, который может изменить сцена, может изменить сцена, может изменить сцена. /> Второе, даже если в некотором смысле это не безопасно: Что я могу с этим поделать? Существует ли каноническое решение для использования getenv ? ,
Например, заблокировав вручную вручную get_env_mtx mutex или, возможно, сделав мою переменную объявление Static ? Как в, < /p>
Код: Выделить всё
static const char* ompi_size_cstr = std::getenv("OMPI_COMM_WORLD_SIZE");
< /code>
или < /p>
static std::string ompi_size_cstr = std::getenv("OMPI_COMM_WORLD_SIZE");
Было бы также хорошо, чтобы улучшить код, даже если в конце я должен добавить nolint . Clang-tidy версия 14.0.6 и в C ++ 17.
Подробнее здесь: https://stackoverflow.com/questions/744 ... t-variable
Мобильная версия