无论我们选择用什么方式去实现一个锁,都需要硬件提供支持。在单处理器的计算机系统中实现一个锁,我们只需要在读写锁变量时禁止中断就可以了。禁止了中断,进程就无法切换,自然就实现了对锁操作的原子性。另一个做法就是使用原子操作:test_and_set。
类似于 test_and_set和compare_and_swap这种原子操作,在多处理器的计算机系统中也可以正确地保证对共享内存访问的原子性。
由这两个底层的操作再封装成高级的函数。
无论我们选择用什么方式去实现一个锁,都需要硬件提供支持。在单处理器的计算机系统中实现一个锁,我们只需要在读写锁变量时禁止中断就可以了。禁止了中断,进程就无法切换,自然就实现了对锁操作的原子性。另一个做法就是使用原子操作:test_and_set。
类似于 test_and_set和compare_and_swap这种原子操作,在多处理器的计算机系统中也可以正确地保证对共享内存访问的原子性。
由这两个底层的操作再封装成高级的函数。