thread under lock fixed

This commit is contained in:
VaclavT 2021-11-07 12:31:48 +01:00
parent a5a0029341
commit 13f7922e9a
1 changed files with 4 additions and 4 deletions

8
ml.cpp
View File

@ -1954,7 +1954,7 @@ MlValue thread_create(std::vector<MlValue> args, MlEnvironment &env) {
for (size_t i = 0; i < args.size(); i++) for (size_t i = 0; i < args.size(); i++)
MlValue acc = args[i].eval(env); MlValue acc = args[i].eval(env);
} catch (std::exception &e) { } catch (std::exception &e) {
std::cerr << "thread exception: " << e.what() << std::endl; std::cerr << "thread_create exception: " << e.what() << std::endl;
throw e; throw e;
} }
}; };
@ -1974,15 +1974,15 @@ MlValue thread_create(std::vector<MlValue> args, MlEnvironment &env) {
} }
MlValue thread_under_lock(std::vector<MlValue> args, MlEnvironment &env) { MlValue thread_under_lock(std::vector<MlValue> args, MlEnvironment &env) {
if (args.size() != 2) if (args.size() < 2)
throw MlError(MlValue("thread_under_lock", thread_under_lock), env, args.size() > 2 ? TOO_MANY_ARGS : TOO_FEW_ARGS); throw MlError(MlValue("thread_under_lock", thread_under_lock), env, TOO_FEW_ARGS);
if (args[0].as_string() != "ilock") if (args[0].as_string() != "ilock")
throw MlError(MlValue("thread_under_lock", thread_under_lock), env, UNKNOWN_ERROR); throw MlError(MlValue("thread_under_lock", thread_under_lock), env, UNKNOWN_ERROR);
std::lock_guard<std::mutex> lockGuard(interpreter_mutex); std::lock_guard<std::mutex> lockGuard(interpreter_mutex);
MlValue acc; MlValue acc;
for (size_t i = 0; i < args.size(); i++) for (size_t i = 1; i < args.size(); i++)
acc = args[i].eval(env); acc = args[i].eval(env);
return acc; return acc;