首先,我們定義乙個被操作的物件的類cell,在這個類裡,有兩個方法:readfromcell()和writetocell。消費者執行緒將呼叫readfromcell()讀取cellcontents的內容並且顯示出來,生產者程序將呼叫writetocell()方法向cellcontents寫入資料。
public class cell
catch (synchronizationlockexception e)
catch (threadinterruptedexception e)
}console.writeline("consume: ",cellcontents);
readerflag = false; file://重置readerflag標誌,表示消費行為已經完成
monitor.pulse(this); file://通知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); file://通知另外乙個執行緒中正在等待的readfromcell()方法}}
} 下面定義生產者cellprod和消費者類cellcons,它們都只有乙個方法threadrun(),以便在main()函式中提供給執行緒的threadstart**物件,作為執行緒的入口。
public class cellprod
public void threadrun( )
} public class cellcons
public void threadrun( )
}
C 的多執行緒機制探索
c 的多執行緒機制探索 與threadpool類不同,timer類的作用是設定乙個定時器,定時執行使用者指定的函式,而這個函式的傳遞是靠另外乙個 物件timercallback,它必須在建立timer物件時就指定,並且不能更改。定時器啟動後,系統將自動建立乙個新的執行緒,並且在這個執行緒裡執行使用者...
C 的多執行緒機制探索 3 1
c 的多執行緒機制探索 3.1 2007 04 03 15 51 三.執行緒的同步和通訊 生產者和消費者 假 設這樣一種情況,兩個執行緒同時維護乙個佇列,如果乙個執行緒對佇列中新增元素,而另外乙個執行緒從佇列中取用元素,那麼我們稱新增元素的執行緒為生產者,稱取用 元素的執行緒為消費者。生產者與消費者...
C 的多執行緒機制探索4
expression代表你希望跟蹤的物件,通常是物件引用。一般地,如果你想保護乙個類的例項,你可以使用this 如果你希望保護乙個靜態變數 如互斥 段在乙個靜態方法內部 一般使用類名就可以了。而statement block就是互斥段的 這段 在乙個時刻內只可能被乙個執行緒執行。using syst...