1
我在看讀者/作家syncronization的實現,我有一個問題。關於讀者/作家同步
這是我在看代碼:
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);
}
這是閱讀器的代碼,我的問題是,爲什麼等待(讀者)是互斥區域外完成。出於同樣的原因,爲什麼Post(作家)也不是在外面完成的?
這段代碼來自操作系統課程,所以我很確定它是正確的。
有人能告訴我區別嗎?
Thx提前。
英文代碼,por優惠! – Shahbaz 2012-07-25 09:53:50
請正確縮進你的代碼,給我們一個關於你的操作系統的提示,並且給我們你的全局函數和變量的聲明。 – 2012-07-25 16:12:25