我在使用互斥锁时正在考虑这个问题。
例如,如果您使用互斥锁锁定线程
m.lock();
a += b;
m.unlock();
当两个线程碰撞时会发生什么?是不是这样:
1)通过锁定线程A告诉CPU这必须不间断地执行直到解锁并且当a += b语句发生时上下文切换永远不会发生。
2) 线程 A 锁定,在执行 a += b 语句上下文切换时,线程 B 看到它被锁定,放弃控制,一切都回到 A 完成 a += b;操作和解锁访问?
如果毕竟是情况 2,有没有办法告诉 CPU 代码的某些部分永远不会被上下文切换中断?