Monitor Lock使用示例

2021-06-16 08:16:33 字數 707 閱讀 8818

很久之前的面試就遇到過關於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 ...