是否因为应该使用原子 LOAD 和 STORE 指令设置互斥锁,以便不会重新排序内存访问?一组指令的原子执行意味着指令被视为一个不能被中断的单步。
// example process using mutual exclusion
void process() {
int mutex;
init_lock (&mutex);
do {
lock (&mutex);
// critical section
unlock (&mutex);
//remainder section
} while(TRUE);
}
// mutual exclusion functions
void init_lock (int *mutex) {
*mutex = 0;
}
void lock (int *mutex) {
while(TestAndSet(mutex))
}
void unlock (int *mutex) {
*mutex = 0;
}
int TestAndSet(*target) {
int rv = *target;
*target = 1;
return rv;
}
只看它,似乎这些函数与之前发布的示例代码执行相同的操作,但我想这种方式可以确保互斥,因为在 *target 上运行的函数是原子的......??
有错别字见谅...