我有一个实现读写器问题的方法,只是做了一点改动,如下所示:
rw_mutex = semaphore(1);
mutex = semaphore(1);
int read_count = 0;
// ---- WRITERS -----
do {
rw_mutex.wait();
/* Writing is performed */
rw_mutext.signal();
} while(ture);
// ---- READERS -----
do {
mutex.wait();
read_count++;
mutex.signal();
if(read_count == 1){
rw_mutex.wait();
}
//mutex.signal();
/* Reading is performed */
mutex.wait();
read_count--;
if(read_count == 0)
rw_mutex.signal();
mutex.signal();
} while(true);
我认为,“作家”部分没有任何问题。但是在“读取器”部分中,在执行读取之前,在read_count检查条件之前会发出互斥信号量。
可能会出现什么问题?互斥,进度和有限等待条件如何?哪些条件不能满足?