日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
自動(dòng)重置事件只是一個(gè)愚蠢的信號(hào)量

當(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í)挺難的。


標(biāo)題名稱:自動(dòng)重置事件只是一個(gè)愚蠢的信號(hào)量
瀏覽地址:http://m.5511xx.com/article/dhhsoce.html