声明必须以原子方式执行对acquire()或release()的调用。那是什么意思?
acquire() {
while (!available)
; /* busy wait */
available = false;;
}
do {
(acquire lock)
critical section
(release lock)
remainder section
} while (true);
release() {
available = true;
}
atomic
操作意味着它将完全完成或根本不完成。在MIDDLE中无法停止/终止/终止操作。
原子操作主要用于多线程编程。这些操作用于保持关键部分/变量理智的健全性,因为许多线程竞争执行。
阅读关于C ++中的原子操作和并发性的好地方是Anthony Williams的“Concurrency in Action”