【发布时间】:2013-01-28 00:18:16
【问题描述】:
在我的代码中,我有一个使用静态随机引擎生成器运行的函数,如果用户尝试从与主线程不同的线程调用此函数,我希望能够引发错误。
例如,如果您考虑以下功能:
void f()
{
if (/* SOMETHING */) {
throw std::future_error("ERROR = f() : cannot be executed in parallel");
}
}
/* SOMETHING */ 是什么?
【问题讨论】:
-
实现一个最初锁定的信号量,你就完全摆脱了这个问题。但是不要忘记在并行块终止后释放它。
-
/* 一些东西 */ == IsSameThread(Main,Me),以任何方便的方式实现。
标签: c++ exception c++11 parallel-processing stdthread