小编Al *_*epé的帖子

如何复制/移动包含互斥体的类

我正在尝试使用互斥锁来防止多个线程同时读取变量。

\n\n

我的代码生成多个“Carriers”对象,所有对象都具有相同的“SMSDetector”,并且在尝试评估某些 Dolfin 函数时代码崩溃(分段错误)(是的,我使用 Fenics 库进行一些 FEM 计算);所以我试图在评估之前锁定互斥体并在评估之后解锁。

\n\n

我现在的问题是,我需要复制/移动构造函数以使 Carrier 类能够 mov/copi,但我似乎没有正确理解它们。没有互斥体我得到:Carrier.cpp:203:42: error: \xe2\x80\x98Carrier& operator=(const Carrier&)\xe2\x80\x99 must be a nonstatic member function Carrier& operator = (const Carrier& other)

\n\n

通过互斥体我得到:Carrier.cpp:200:49: error: no matching function for call to \xe2\x80\x98std::lock_guard<std::mutex>::lock_guard(const std::mutex&)\xe2\x80\x99\n std::lock_guard<std::mutex> lock(other.safeRead);

\n\n

我正在尝试用 c++11 标准编写整个程序,因此如果有人有 c++11 解决方案,我将非常感激。

\n\n

这是冲突的代码:\n

\n\n
std::valarray<double> Carrier::simulate_drift(double dt, double max_time, double x_init, double y_init )\n\n{\n      _x[0] = x_init;\n      _x[1] = y_init;\n\n      // get number of steps from time\n  int max_steps = …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading mutex c++11

6
推荐指数
1
解决办法
2664
查看次数

标签 统计

c++ ×1

c++11 ×1

multithreading ×1

mutex ×1