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