Timer.h

該類主要服務(wù)于TimerId和TimerQueue這個(gè)兩個(gè)類逼友。
包含了超時(shí)時(shí)間榴嗅,需要執(zhí)行的函數(shù),是否是周期性執(zhí)行赖瞒,周期時(shí)間女揭。 還有一個(gè)是計(jì)時(shí)器序號(hào)

Timer

該類記錄一個(gè)計(jì)時(shí)器,同時(shí)執(zhí)行超時(shí)后的函數(shù)栏饮。

成員變量

  1. const TimerCallback _cb
    該成員記錄了吧兔,超時(shí)以后需要執(zhí)行的函數(shù)。
    其中
typedef boost::function<void()> TimerCallback;
  1. Timestamp _expiration
    超時(shí)時(shí)間袍嬉,微秒級(jí)別的境蔼。
    因?yàn)槭褂玫?code>timerfd也是個(gè)微秒級(jí)別的
  2. const bool _repeat
    是否是個(gè)周期執(zhí)行的函數(shù)
    也就是說,開始執(zhí)行以后伺通,是否每隔多長時(shí)間就執(zhí)行一次的函數(shù)
  3. const double _interval
    周期時(shí)間
  4. const int64_t sequence
    每個(gè)計(jì)時(shí)器的一個(gè)標(biāo)志吧箍土。每次的都不重復(fù),每建立一個(gè)就+1
  5. static AtomicInt64 _s_numCreated;
    這個(gè)是一個(gè)原子操作罐监,用來給計(jì)數(shù)器標(biāo)號(hào)的

成員函數(shù)

  1. 構(gòu)造函數(shù)
    構(gòu)造函數(shù)需要記錄超時(shí)時(shí)間吴藻,超時(shí)后執(zhí)行的函數(shù),周期時(shí)間弓柱。周期時(shí)間為0的話沟堡,那么就不周期執(zhí)行
  Timer(TimerCallback&& cb, Timestamp when, double interval)
    : callback_(std::move(cb)),
      expiration_(when),
      interval_(interval),
      repeat_(interval > 0.0),
      sequence_(s_numCreated_.incrementAndGet())
  { }
  1. void run()
    該函數(shù)會(huì)執(zhí)行超時(shí)后執(zhí)行的函數(shù)
void run()
{
  _cd();
}
  1. 三個(gè)返回內(nèi)部數(shù)據(jù)的函數(shù)
    當(dāng)計(jì)數(shù)器被調(diào)用以后,需要在來查詢這些參數(shù)矢空,判斷是否再此將該計(jì)數(shù)器添加到時(shí)間隊(duì)列中
  Timestamp expiration() const  { return _expiration; }
  bool repeat() const { return _repeat; }
  int64_t sequence() const { return _sequence; }
  1. void restart(Timestamp now);
    重置超時(shí)時(shí)間
    當(dāng)計(jì)數(shù)器執(zhí)行以后航罗,需要判斷該計(jì)數(shù)器是否是一個(gè)周期性計(jì)時(shí)器,如果是一個(gè)周期性計(jì)時(shí)器屁药,那么需要重置該計(jì)時(shí)器的超時(shí)時(shí)間粥血,然后再由其他函數(shù)將該計(jì)時(shí)器添加到時(shí)間隊(duì)列中∧鸺‘
    如果是一個(gè)周期性函數(shù)复亏,那么需要將超時(shí)時(shí)間設(shè)定為當(dāng)前時(shí)間+周期性執(zhí)行時(shí)間(timerfd_create設(shè)置的是從時(shí)間紀(jì)元開始)
void restart(Timestamp now)
{
  if (_repeat)
  {
    _expiration = addTime(now, _interval);
  }
  else
  {
    _expiration = Timestamp::invalid();
  }
}

功能

該類,封裝一個(gè)計(jì)時(shí)器缭嫡。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缔御,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子械巡,更是在濱河造成了極大的恐慌刹淌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讥耗,死亡現(xiàn)場離奇詭異有勾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)古程,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蔼卡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挣磨,你說我怎么就攤上這事雇逞。” “怎么了茁裙?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵塘砸,是天一觀的道長。 經(jīng)常有香客問我晤锥,道長掉蔬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任矾瘾,我火速辦了婚禮女轿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壕翩。我一直安慰自己蛉迹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布放妈。 她就那樣靜靜地躺著北救,像睡著了一般。 火紅的嫁衣襯著肌膚如雪大猛。 梳的紋絲不亂的頭發(fā)上扭倾,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音挽绩,去河邊找鬼膛壹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唉堪,可吹牛的內(nèi)容都是我干的模聋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼唠亚,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼链方!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灶搜,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤祟蚀,失蹤者是張志新(化名)和其女友劉穎工窍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體前酿,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡患雏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罢维。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淹仑。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肺孵,靈堂內(nèi)的尸體忽然破棺而出匀借,到底是詐尸還是另有隱情,我是刑警寧澤平窘,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布吓肋,位于F島的核電站,受9級(jí)特大地震影響瑰艘,放射性物質(zhì)發(fā)生泄漏蓬坡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一磅叛、第九天 我趴在偏房一處隱蔽的房頂上張望屑咳。 院中可真熱鬧,春花似錦弊琴、人聲如沸兆龙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽紫皇。三九已至,卻和暖如春腋寨,著一層夾襖步出監(jiān)牢的瞬間聪铺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工萄窜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铃剔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓查刻,卻偏偏與公主長得像键兜,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子穗泵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理普气,服務(wù)發(fā)現(xiàn),斷路器佃延,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 1.項(xiàng)目經(jīng)驗(yàn) 2.基礎(chǔ)問題 3.指南認(rèn)識(shí) 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎(chǔ) 2.CocoaTouch...
    陽光的大男孩兒閱讀 4,986評(píng)論 0 13
  • 1.OC的類可以多重繼承嗎现诀?可以實(shí)現(xiàn)多個(gè)接口嗎夷磕?要想實(shí)現(xiàn)類似多重繼承如何實(shí)現(xiàn)?答:OC不可以實(shí)現(xiàn)多重繼承仔沿∑笮浚可以實(shí)現(xiàn)...
    歐辰_OSR閱讀 1,985評(píng)論 0 30
  • 今天來結(jié)合上周的經(jīng)歷來淺淺談一下產(chǎn)品對(duì)接線上推廣需求的流程和需要注意的地方吧。 一于未、流程 1. 首先當(dāng)然是明確此次...
    小清歌丷閱讀 272評(píng)論 0 4
  • 長亭外烘浦,古道邊,芳草碧連天萍鲸。晚風(fēng)拂柳笛聲殘闷叉,夕陽山外山。 天之涯脊阴,地之角握侧,知交半零落。一瓢濁酒盡余歡嘿期,今宵別夢(mèng)寒品擎。...
    牧羊蜀黍閱讀 405評(píng)論 0 0