2023-08-28 10:29:38來(lái)源:今日頭條
當(dāng)我們調(diào)用 CreateEvent 函數(shù)創(chuàng)建一個(gè)事件對(duì)象的時(shí)候,我們可以通過(guò)參數(shù)來(lái)指定這個(gè)事件對(duì)象是自動(dòng)重置的,還是手動(dòng)重置的。
對(duì)于一個(gè)手動(dòng)重置的事件對(duì)象,它很容易理解:當(dāng)事件未激發(fā)時(shí),在此事件上的等待將一直掛起,而當(dāng)事件被激發(fā)時(shí),在此事件對(duì)象上的等待將會(huì)立即返回。上面的工作原則和有多少個(gè)線程正在等待此對(duì)象沒(méi)有任何關(guān)系。所有線程對(duì)此對(duì)象的等待操作都是一致的,并且事件對(duì)象的狀態(tài)也不會(huì)受到等待它的線程數(shù)量影響。
對(duì)于一個(gè)自動(dòng)重置的事件對(duì)象,事情開(kāi)始變得復(fù)雜了。
(資料圖片僅供參考)
理解它的工作原理的最簡(jiǎn)單方法是:將它看做是一個(gè)最大計(jì)數(shù)為 1 的信號(hào)量。
此話怎講?
當(dāng)事件未激發(fā)時(shí),在此事件上的等待的線程將一直掛起,而當(dāng)事件被激發(fā)時(shí),僅會(huì)只有一個(gè)等待線程結(jié)束等待,并且事件對(duì)象將會(huì)自動(dòng)重置其狀態(tài)為未激發(fā)態(tài)。結(jié)果就是:剩下的其他線程將會(huì)繼續(xù)等待。從我們之前對(duì) PulseEvent 的討論來(lái)看,你可能已經(jīng)知道了,如果有多個(gè)等待線程,則不確定將釋放哪個(gè)等待線程。
使用自動(dòng)重置事件的陷阱在于:你設(shè)置了已處于激發(fā)態(tài)的事件。由于事件只有兩種狀態(tài)(設(shè)置和重置),因此設(shè)置已設(shè)置的事件不起作用。如果使用事件來(lái)控制資源生產(chǎn)者/使用者模型,則設(shè)置已處于激發(fā)態(tài)的事件將導(dǎo)致你看起來(lái) “丟失:了令牌。
請(qǐng)考慮以下場(chǎng)景模式。
但是,如果時(shí)機(jī)沒(méi)有完全出來(lái)怎么辦?如果使用者線程完成工作有點(diǎn)慢(或者生產(chǎn)者線程生成它的速度有點(diǎn)快),該怎么辦:
請(qǐng)注意,生成者生成了三個(gè)工作項(xiàng),但使用者只執(zhí)行了其中的兩個(gè)。第三個(gè) SetEvent 沒(méi)有效果,因?yàn)槭录呀?jīng)設(shè)置好了。(如果嘗試將信號(hào)量的令牌計(jì)數(shù)增加到超過(guò)其最大值,則會(huì)遇到相同的問(wèn)題。)如果希望喚醒數(shù)與集數(shù)匹配,則需要使用最大令牌計(jì)數(shù)與將支持的最大未完成工作項(xiàng)數(shù)一樣高的信號(hào)量。
總結(jié)了解你手上工具的使用方法,更加需要了解其局限性。永遠(yuǎn)在正確的場(chǎng)景下使用正確的工具,這確實(shí)挺難的。
關(guān)鍵詞:
當(dāng)我們調(diào)用CreateEvent函數(shù)創(chuàng)建一個(gè)事件對(duì)象的時(shí)候,我們可以通過(guò)參數(shù)
最近有人問(wèn)我下面這個(gè)問(wèn)題,我們依然可以使用之前我提到的“思維調(diào)試”
前言大家好,我是林三心,用最通俗易懂的話講最難的知識(shí)點(diǎn)是我的座右銘
前言4G的機(jī)器上申請(qǐng)8G的內(nèi)存,是否可以成功?這個(gè)問(wèn)題沒(méi)有辦法,是沒(méi)有
VisualStudioCode是一款功能強(qiáng)大、可擴(kuò)展且輕量級(jí)的代碼編輯器,經(jīng)過(guò)多
數(shù)據(jù)寶統(tǒng)計(jì),截至8月25日收盤(pán),滬深兩市共有59只個(gè)股連續(xù)5日或5日以上
河北遵化:精心準(zhǔn)備迎開(kāi)學(xué)
北京時(shí)間8月28日西甲聯(lián)賽第3輪,畢爾巴鄂競(jìng)技主場(chǎng)對(duì)陣皇家貝蒂斯。畢爾
您好,現(xiàn)在漢格來(lái)為大家解答以上的問(wèn)題。少年的繁體字圖片,少年的繁體
我是小前,我來(lái)為大家解答以上問(wèn)題。diy小屋怎么自己制作房間,diy小屋
東方網(wǎng)記者包永婷8月27日?qǐng)?bào)道:8月27日,上海大劇院迎來(lái)開(kāi)業(yè)25周年。由
很多人對(duì)倒錯(cuò)的歸結(jié)密室溺亡,倒錯(cuò)的歸結(jié)不是很了解那具體是什么情況呢
C視覺(jué)攝影師周琦登臨龍泉山,猶如站在成都這座山水立體城市的觀景臺(tái)。
英國(guó)建議G7邀請(qǐng)中國(guó)參會(huì),日本氣得直跳腳,六國(guó)獲中方同意入群,美國(guó),中
大家好,今日關(guān)于【越吃越瘦的蔬菜7個(gè)讓人發(fā)胖的飲食習(xí)慣】迅速上了的