using system;
using system.threading;
public
class cell
catch (synchronizationlockexception e)
catch (threadinterruptedexception e)
}
console.writeline(
"consume:
", cellcontents);
readerflag =
false;
//重置readerflag標誌,表示消費行為已經完成
monitor.pulse(
this);
//通知writetocell()方法(該方法在另外乙個執行緒中執行,等待中)
}return cellcontents;
}public
void writetocell(
int n)
catch (synchronizationlockexception e)
catch (threadinterruptedexception e)
}
cellcontents = n;
console.writeline(
"produce:
", cellcontents);
readerflag =
true;
monitor.pulse(
this);
//通知另外乙個執行緒中正在等待的readfromcell()方法 }}
public
class cellprod
public
void threadrun()
}
public
class cellcons
public
void threadrun()
}
public
class monitorsample
catch (threadstateexception e)
catch (threadinterruptedexception e)
//儘管main()函式沒有返回值,但下面這條語句可以向父程序返回執行結果
environment.exitcode = result;}}
}
c#多執行緒學習(三) 生產者和消費者:
C 多執行緒 三 生產者和消費者
前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...
C 多執行緒學習 三 生產者和消費者
前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...
C 多執行緒學習 三 生產者和消費者
前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...