久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

Golang中定時(shí)器的陷阱詳解-創(chuàng)新互聯(lián)

前言

創(chuàng)新互聯(lián)是專業(yè)的天寧網(wǎng)站建設(shè)公司,天寧接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行天寧網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

在業(yè)務(wù)中,我們經(jīng)常需要基于定時(shí)任務(wù)來觸發(fā)來實(shí)現(xiàn)各種功能。比如TTL會(huì)話管理、鎖、定時(shí)任務(wù)(鬧鐘)或更復(fù)雜的狀態(tài)切換等等。百納網(wǎng)主要給大家介紹了關(guān)于Golang定時(shí)器陷阱的相關(guān)內(nèi)容,所謂陷阱,就是它不是你認(rèn)為的那樣,這種認(rèn)知誤差可能讓你的軟件留下隱藏Bug。剛好Timer就有3個(gè)陷阱,我們會(huì)講

1)Reset的陷阱和

2)通道的陷阱,

3)Stop的陷阱與Reset的陷阱類似,自己探索吧。

下面話不多說了,來一起看看詳細(xì)的介紹吧

Reset的陷阱在哪

Timer.Reset()函數(shù)的返回值是bool類型,我們看一個(gè)問題三連:

  • 它的返回值代表什么呢?
  • 我們想要的成功是什么?
  • 失敗是什么?

成功:一段時(shí)間之后定時(shí)器超時(shí),收到超時(shí)事件。

失?。撼晒Φ姆疵?,我們收不到那個(gè)事件。對(duì)于失敗,我們應(yīng)當(dāng)做些什么,確保我們的定時(shí)器發(fā)揮作用。

Reset的返回值是不是這個(gè)意思?

通過查看文檔和實(shí)現(xiàn),Timer.Reset()的返回值并不符合我們的預(yù)期,這就是誤差。它的返回值不代表重設(shè)定時(shí)器成功或失敗,而是在表達(dá)定時(shí)器在重設(shè)前的狀態(tài):

  • 當(dāng)Timer已經(jīng)停止或者超時(shí),返回false。
  • 當(dāng)定時(shí)器未超時(shí)時(shí),返回true。

所以,當(dāng)Reset返回false時(shí),我們并不能認(rèn)為一段時(shí)間之后,超時(shí)不會(huì)到來,實(shí)際上可能會(huì)到來,定時(shí)器已經(jīng)生效了。

跳過陷阱,再遇陷阱

如何跳過前面的陷阱,讓Reset符合我們的預(yù)期功能呢?直接忽視Reset的返回值好了,它不能幫助你達(dá)到預(yù)期的效果。

真正的陷阱是Timer的通道,它和我們預(yù)期的成功、失敗密切相關(guān)。我們所期望的定時(shí)器設(shè)置失敗,通常只和通道有關(guān):設(shè)置定時(shí)器前,定時(shí)器的通道Timer.C中是否已經(jīng)有數(shù)據(jù)。

  • 如果有,我們?cè)O(shè)置的定時(shí)器失敗了,我們可能讀到不正確的超時(shí)事件。
  • 如果沒有,我們?cè)O(shè)置的定時(shí)器成功了,我們?cè)谠O(shè)定的時(shí)間得到超時(shí)事件。

接下來解釋為何失敗只與通道中是否存在超時(shí)事件有關(guān)。

定時(shí)器的緩存通道大小只為1,無法多存放超時(shí)事件,看源碼。

// NewTimer creates a new Timer that will send
// the current time on its channel after at least duration d.
func NewTimer(d Duration) *Timer {
 c := make(chan Time, 1) // 緩存通道大小為1
 t := &Timer{
  C: c,
  r: runtimeTimer{
   when: when(d),
   f: sendTime,
   arg: c,
  },
 }
 startTimer(&t.r)
 return t
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

名稱欄目:Golang中定時(shí)器的陷阱詳解-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://sd-ha.com/article24/cdhjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司電子商務(wù)、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作