【发布时间】:2012-07-23 16:18:18
【问题描述】:
我正在研究读取器/写入器同步实现,我有一个问题。
这是我正在查看的代码:
start_reading(){
lock(m);
if (em_escrita || escritores_espera > 0) {
leitores_espera++;
unlock(m);
wait(readers);
lock(m);
}else
nleitores++;
unlock(m);
}
finish_reading(){
lock(m);
nleitores--;
if (nleitores == 0 && escritores_espera > 0){
post(writers);
em_escrita=TRUE;
escritores_espera--;
}
unlock(m);
}
这是阅读器代码,我的问题是,为什么等待(阅读器)在互斥区域之外完成。出于同样的原因,为什么邮政(作家)也不在外面做?
这段代码来自操作系统课程,所以我很确定它是正确的。
谁能告诉我区别?
提前致谢。
【问题讨论】:
-
请正确缩进你的代码,给我们关于你的操作系统的提示,也给我们你的全局函数和变量的声明。
标签: c synchronization mutex semaphore