#inc" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Libevent 定時器

系統(tǒng) 1850 0

先摘一點網(wǎng)上的介紹

?

libevent是一個事件觸發(fā)的網(wǎng)絡庫,適用于windows、linux、bsd等多種平臺,內(nèi)部使用select、epoll、kqueue等系統(tǒng)調(diào)用管理事件機制。著名分布式緩存 軟件 memcached也是libevent based,而且libevent在使用上可以做到跨平臺,而且根據(jù)libevent官方網(wǎng)站上公布的數(shù)據(jù)統(tǒng)計,似乎也有著非凡的性能。

?

接著我們先直接看一個例子,該例子每隔幾秒輸出一個句子

      #include <iostream>
      
        

#include 
      
      <
      
        event
      
      .h>
      
        

#include 
      
      <ctime>




      
        using
      
      
        namespace
      
      
         std;




      
      
        void
      
       cb(evutil_socket_t fd, 
      
        short
      
       what, 
      
        void
      
       *
      
        arg)

{

    cout
      
      <<
      
        "
      
      
        event ocurrence every 2 seconds.
      
      
        "
      
      <<
      
        endl;

}




      
      
        int
      
      
         main()

{

    timeval two_sec 
      
      = {
      
        2
      
      , 
      
        0
      
      
        };

    event_base 
      
      *
      
        base
      
       =
      
         event_base_new();

    
      
      
        event
      
       *timeout = event_new(
      
        base
      
      , -
      
        1
      
      , EV_PERSIST|
      
        EV_TIMEOUT, cb, NULL);

    event_add(timeout, 
      
      &
      
        two_sec);

    event_base_dispatch(
      
      
        base
      
      
        );

    
      
      
        return
      
      
        0
      
      
        ;

}
      
    

event_base是libevent中的基本數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)進行事件的調(diào)度,這里用 event_config_new ?(void)函數(shù)new了一個event_base變量。event結(jié)構(gòu)libevent里另外一個重要的數(shù)據(jù)結(jié)構(gòu),它保存著有關(guān)事件發(fā)生的各種信息,比如io事件的文件描述符,發(fā)生時調(diào)用的回調(diào)函數(shù)等。本例中我們定義了一個定時器事件,使用 event_new ?( event_base ?*, evutil_socket_t, short,? event_callback_fn , void *)創(chuàng)建了一個定時器事件,該函數(shù)第一個參數(shù)為調(diào)度該事件的event_base結(jié)構(gòu);第二個參數(shù)為io事件對應的文件描述符,這里為定時器事件沒有fd所以定位-1,如果要定義signal事件,該參數(shù)就是信號的標志;第三個參數(shù)為事件event flags,可以以下幾個及其合并EV_READ(io),EV_WRITE(io),EV_SIGNAL(信號),EV_PERSIST(存在該標志則事件發(fā)生后event_base將其重新添加到pending中),EV_ET,?EV_TIMEOUT,根據(jù)程序要求選用EV_PERSIST|EV_TIMEOUT,就是重復定時。libevent中的事件有幾種狀態(tài):no-pend&no-active,pending,active;剛剛建立的event為第一種狀態(tài),使用event_add(event*, time_val)將其變成pending狀態(tài),這樣event_base進行事件調(diào)度時才會執(zhí)行該事件,該函數(shù)第二參數(shù)為timeout時間,這里取2s。最后將進行event_base事件循環(huán),event_base_dispatch。

使用libevent進行網(wǎng)絡編程的話大概也就是這個流程。

Libevent 定時器


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产午夜亚洲精品久久999 | 欧美精品成人免费视频 | 特级aav毛片日本免费视频 | 成年女人视频网站免费m | 欧美成人午夜精品一区二区 | 国产精品成人亚洲 | 日韩一区二区三 | 亚洲国产精品久久久久婷婷老年 | 香蕉一区二区三区观 | 久久婷婷综合在线视频观看6 | 亚洲精品久久久中文字幕 | 亚洲一区二区三区免费看 | 九九视频在线观看视频23 | 日日噜噜夜夜狠狠tv视频免费 | 奇米第四色在线观看 | 国产三级精品三级男人的天堂 | sese在线播放| 欧美一区精品二区三区 | 久久www免费人成精品 | 亚洲性色视频 | 99久久综合精品国产 | 国产精品资源在线观看 | 美美女高清毛片视频黄的一免费 | 亚洲成a人v大片在线观看 | 御姐色网| 久久国内精品自在自线400部o | 免费的黄色小视频 | 日本美女久久 | 老太做爰xxxx视频 | 91人人看 | 99精品视频在线观看免费专区 | 中文精品北条麻妃中文 | 99国产大尺度福利视频 | 成人97| 欧美视频在线不卡 | 久久88色综合色鬼 | 亚洲视频一区在线播放 | 国产精品久久香蕉免费播放 | 免费看欧美毛片大片免费看 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 九九热精品在线观看 |