我发现互联网上的许多读写自旋锁实现都不必要地复杂。我用 C++ 编写了一个简单的读写锁。
谁能告诉我,如果我遗漏了什么?
int r = 0;
int w = 0;
read_lock(void)
{
atomic_inc(r); //increment value atomically
while( w != 0);
}
read_unlock(void)
{
atomic_dec(r); // Decrement value atomically
}
write_lock(void)
{
while( (r != 0) &&
( w != 0))
atomic_inc(w); //increment value atomically
}
write_unlock(void)
{
atomic_dec(w); //Decrement value atomically
}
用法如下。
read_lock()
// Critical Section
read_unlock();
write_lock()
// Critical Section
write_unlock();
编辑:
感谢您的回答。我现在将答案更改为原子等价物