我想问一下最简单的多线程互斥方法。以下代码是线程安全的(快速n脏)吗?
class myclass
{
bool locked;
vector<double> vals;
myclass();
void add(double val);
};
void myclass::add(double val)
{
if(!locked)
{
this->locked = 1;
this->vals.push_back(val);
this->locked = 0;
}
else
{
this->add(val);
}
}
int main()
{
myclass cls;
//start parallelism
cls.add(static_cast<double>(rand()));
}
这行得通吗?它是线程安全的吗?我只是想了解如何编写最简单的互斥锁。
如果您对我的示例有任何建议,那就太好了。
谢谢你。
谢谢你说它不起作用。您能否建议一个独立于编译器的修复程序?