內(nèi)核模式構(gòu)造
前篇我們已經(jīng)提過,內(nèi)核模式構(gòu)造比用戶模式構(gòu)造慢很多,一個原因是它們要求Windows操作系統(tǒng)自身的配合,另一個原因是內(nèi)核對象上調(diào)用的每個方法都造成調(diào)用線程從托管代碼轉(zhuǎn)換為本機(jī)用戶模式代碼,再轉(zhuǎn)換為背景內(nèi)核模式代碼,這些轉(zhuǎn)換需要大量的CPU時間。
但是內(nèi)核模式擁有用戶模式?jīng)]有的優(yōu)點(diǎn):
1. 當(dāng)檢測到資源競爭時,windows會阻塞輸?shù)舻木€程
2. 可同步一臺機(jī)器中不同進(jìn)程中運(yùn)行的線程
3. 防止未經(jīng)授權(quán)的賬戶訪問線程
4. 阻塞的線程可以指定超時值
事件和信號量就是兩種內(nèi)核模式線程同步構(gòu)造。
WaitHandle抽象基類,唯一的作用就是包裝一個windows內(nèi)核對象句柄,繼承WaitHadle的對象可以分為三類:1. 事件構(gòu)造(AutoResetEvent、ManualResetEvent) 2. Semaphore構(gòu)造 3. Mutex構(gòu)造