From 5382e6cef9750341bc4fee6814bab0ecb54a7f55 Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Mon, 13 Mar 2023 10:59:24 +0100 Subject: [PATCH] [PaL] Made function parameter thread safe --- ParameterLib/FunctionParameter.h | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ParameterLib/FunctionParameter.h b/ParameterLib/FunctionParameter.h index e919d56d421..6cf9a720bf5 100644 --- a/ParameterLib/FunctionParameter.h +++ b/ParameterLib/FunctionParameter.h @@ -121,14 +121,20 @@ struct FunctionParameter final : public Parameter<T> "coordinates."); } auto const coords = pos.getCoordinates().value(); - x = coords[0]; - y = coords[1]; - z = coords[2]; - time = t; - for (unsigned i = 0; i < _vec_expression.size(); i++) { - cache[i] = _vec_expression[i].value(); + std::lock_guard lock_guard(_mutex); + x = coords[0]; + y = coords[1]; + z = coords[2]; + time = t; + + { + for (unsigned i = 0; i < _vec_expression.size(); i++) + { + cache[i] = _vec_expression[i].value(); + } + } } if (!this->_coordinate_system) @@ -143,6 +149,7 @@ private: symbol_table_t _symbol_table; std::vector<expression_t> _vec_expression; std::vector<std::pair<std::string, CurveWrapper>> _curves; + mutable std::mutex _mutex; }; std::unique_ptr<ParameterBase> createFunctionParameter( -- GitLab