From 6f2f11c3fb1bae29fc5edf3eab0cc02e2f285b7c Mon Sep 17 00:00:00 2001 From: Nathanne Isip Date: Fri, 27 Sep 2024 03:47:55 +0800 Subject: [PATCH] Improved implementation of the visit() function for parallel expression. --- src/ast/expression/ParallelExpression.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ast/expression/ParallelExpression.cpp b/src/ast/expression/ParallelExpression.cpp index d1ec71e..a3b998d 100644 --- a/src/ast/expression/ParallelExpression.cpp +++ b/src/ast/expression/ParallelExpression.cpp @@ -22,13 +22,21 @@ #include #include +#include #include DynamicObject ParallelExpression::visit(SymbolTable& symbols) { std::thread task( - [this, expr = std::move(this->expression), sym = &symbols]() mutable { + std::bind([ + this, + expr = std::move(this->expression), + sym = &symbols + ]() mutable { + std::mutex mtx; + std::scoped_lock lock(mtx); + expr->visit(*sym); - } + }) ); symbols.addParallelism(std::move(task));