我正在尝试从多个线程中进行 RInside 调用,并遇到此错误。
terminate called after throwing an instance of 'std::runtime_error'
what(): Error evaluating: qnorm(.65, mean=0,sd=1)
导致这种情况的代码行是:
//within main.cpp//
std::shared_ptr<RInside> R = std::make_shared<RInside>();
//within some_class::some_function(std::shared_ptr<RInside> R)//
double value = Rcpp::as<double>(R->parseEval("qnorm(.65, mean=0,sd=1)"));
R 是一个 std::shared_ptr 在 80+线程之间共享。
我假设这个问题是一个锁定问题,因为 RInside 实例正忙于执行第一个 parseEval 时另一个进来。
我的假设是对的吗?谢谢!