无硬件原子操作支持时,如何实现软件锁?
无硬件原子操作支持时,如何实现软件锁?
在Boost.Lockfree文档中提到:
部分架构本身不提供必要的硬件原子操作,这种情况下会通过自旋锁在软件层面模拟实现。
我能想到的两种实现方法:
- Dekker算法:仅需非撕裂存储即可运行,但仅适用于2个进程。
- Peterson算法:可支持N个进程,但N必须是静态已知的。
不过我不清楚适用于动态N个进程的锁实现方法。
另外我还想到一些极端方法,比如禁用所有中断与上下文切换、关闭其他所有核心,但这些方案过于激进,实际场景中应该不会被采用。
内容的提问来源于stack exchange,提问作者Sourav Kannantha B
相关产品推荐
相关产品推荐

