Memory 这是在没有互斥锁的情况下进行线程同步的正确方法吗

Memory 这是在没有互斥锁的情况下进行线程同步的正确方法吗,memory,atomic,lock-free,barrier,Memory,Atomic,Lock Free,Barrier,这是在没有互斥的情况下同步线程的正确方法吗。 此代码应该运行很长时间 #包括 #包括 #包括 #包括 标准::原子x=0; std::原子y=0; boost::互斥m1; //线程增量 无效线程_Func() { 对于(;;) { //boost::mutex::作用域锁定lx(m1); ++x; ++y; } } //方格线 无效线程_Func_X() { 对于(;;) { //boost::mutex::作用域锁定lx(m1); 如果(y>x) { //在int溢出之前不应该命中 std:

这是在没有互斥的情况下同步线程的正确方法吗。 此代码应该运行很长时间

#包括
#包括
#包括
#包括
标准::原子x=0;
std::原子y=0;
boost::互斥m1;
//线程增量
无效线程_Func()
{
对于(;;)
{
//boost::mutex::作用域锁定lx(m1);
++x;
++y;
}
}
//方格线
无效线程_Func_X()
{
对于(;;)
{
//boost::mutex::作用域锁定lx(m1);
如果(y>x)
{
//在int溢出之前不应该命中

std::cout如果不确切知道您要做什么,很难说这是“正确”的方式。这是有效的代码,但有点刺耳

无法保证“Checker”线程会看到条件
y>x
。理论上它可能永远不会中断。实际上,它会在某个点触发,但x可能不是LONG\u MIN,y LONG\u MAX。换句话说,它不能保证在溢出发生时触发