【发布时间】:2022-11-14 04:50:16
【问题描述】:
我已经阅读了 wiki 上的读者-作者锁 - https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock 但尝试只使用一个计数器和一把锁。
我很想知道这个实现是否有效。如果是,您认为这足以进行技术面试吗?
read() {
lock g;
while (num_of_writers > 0) {
g.wait(); // always yield to writers
}
doRead();
unlock g;
}
write() {
lock g;
numOfWriters++; // let all the writers to queue up here
unlock g;
lock g;
doWrite();
num_of_writers--;
g.notify();
unlock g;
}
【问题讨论】:
标签: multithreading concurrency synchronization semaphore