很久之前的面試就遇到過關於monitor的一道筆試題,雖然很簡單,但是由於我無知啊,基礎差,又不上進,所以對很多東西的認識也很膚淺,就像之前人家形容的一部分人——只是工作經驗豐富,會寫一些**,會用一些技術,但是卻不知道為什麼這麼寫,為什麼這麼用,這一部分人就包括我,
下面是借用的別人的**,只是想借用這個**讓自己以後回來翻看時能清楚一些:
using system.threading;
public class program
static void threadpongproc()
system.console.writeline("threadpong: bye!");
}static void threadpingproc()
system.console.writeline("threadping: bye!");}}
上述三張圖是上述**執行多次的結果,可以看出threadping和threadpong這兩個執行緒並不是誰先start就是誰先執行,而是由作業系統排程來決定的,
monitor中有兩個佇列的概念:ready佇列和waiting佇列,如果執行緒a執行了monitor.wait(),那麼ready佇列中排第一的執行緒就會獲得鎖,同時執行緒a進入waiting佇列的隊尾,如果執行緒b執行了monitor.pulse(),那麼waiting佇列中排第一的執行緒就會進入ready佇列,
SharpZipLib使用示例
sharpziplib使用示例 zipinputstream gzipinputstream用於解壓縮deflate gzip格式流,zipoutputstream gzipoutputstream用於壓縮deflate gzip格式流。streamutil類包含了幾個stream處理輔助方法 co...
ConfigEngine使用示例
configengine使用示例 簡要過程如下 步驟3 編寫你的配置定義檔案 raw.f。步驟4 呼叫confengine裡的genconf.py編譯raw.f,生成raw.h.第一步,定義需要的配置項,儲存在raw.f raw.f檔案的解釋如下 第三列為預設值。注意列是由空白分開的,所以如果預設值...
使用陣列示例
namespace cards public hand south public hand west public hand east public void clear public void returnhandsto pack pack private hand north new hand ...