关于锁的std :: atomic的实现是否可以将程序的行为从正确变为不正确?

raz*_*zeh 10 c++ multithreading

atomic::is_lock_free返回true 时是否有正确且无死锁的C++程序,但未定义或atomic::is_lock_free返回false 时可能包含死锁?

鉴于原子中的任何锁定都将在库的控制下被获取和释放,我无法想象如何解决问题,但是通过多线程和锁定通常有一种方式:-)

axe*_*axe 4

为了在程序中出现死锁,您需要同时持有多个锁。根据 C++11 标准,访问或修改std::atomic<T>变量可能会获取锁,但它会在函数调用完成后立即释放锁,并且在持有锁时不会调用任何用户定义的函数,因此不会出现这种情况两个(或多个)互斥锁同时被锁定;因此,内部可锁定对象不可能出现死锁std::atomic