• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 200, comments - 8, trackbacks - 0, articles - 0

            翻譯:Libevent參考手冊:前言 (二) (轉)

            Posted on 2013-02-04 16:58 鑫龍 閱讀(3011) 評論(0)  編輯 收藏 引用 所屬分類: LIBEVENT

            翻譯自:http://www.wangafu.net/~nickm/libevent-book/Ref0_meta.html
            轉自:
            http://blog.sina.com.cn/s/blog_56dee71a0100q7j6.html

             從一萬英尺外看Libevent

            Libevent是用于編寫高速可移植非阻塞IO應用的庫,其設計目標是:

            v 可移植性:使用libevent編寫的程序應該可以在libevent支持的所有平臺上工作。即使沒有好的方式進行非阻塞IO,libevent也應該支持一般的方式,讓程序可以在受限的環境中運行。

            v 速度:libevent嘗試使用每個平臺上最高速的非阻塞IO實現,并且不引入太多的額外開銷。

            v 可擴展性:libevent被設計為程序即使需要上萬個活動套接字的時候也可以良好工作。

            v 方便:無論何時,最自然的使用libevent編寫程序的方式應該是穩定的、可移植的。

             

            libevent由下列組件構成:

            v evutil:用于抽象不同平臺網絡實現差異的通用功能。

            v event和event_base:libevent的核心,為各種平臺特定的、基于事件的非阻塞IO后端提供抽象API,讓程序可以知道套接字何時已經準備好,可以讀或者寫,并且處理基本的超時功能,檢測OS信號。

            v bufferevent:為libevent基于事件的核心提供使用更方便的封裝。除了通知程序套接字已經準備好讀寫之外,還讓程序可以請求緩沖的讀寫操作,可以知道何時IO已經真正發生。(bufferevent接口有多個后端,可以采用系統能夠提供的更快的非阻塞IO方式,如Windows中的IOCP。)

            v evbuffer:在bufferevent層之下實現了緩沖功能,并且提供了方便有效的訪問函數。

            v evhttp:一個簡單的HTTP客戶端/服務器實現。

            v evdns:一個簡單的DNS客戶端/服務器實現。

            v evrpc:一個簡單的RPC實現。

             庫

            創建libevent時,默認安裝下列庫:

            v libevent_core:所有核心的事件和緩沖功能,包含了所有的event_base、evbuffer、bufferevent和工具函數。

            v libevent_extra:定義了程序可能需要,也可能不需要的協議特定功能,包括HTTP、DNS和RPC。

            v libevent:這個庫因為歷史原因而存在,它包含libevent_core和libevent_extra的內容。不應該使用這個庫,未來版本的libevent可能去掉這個庫。

            某些平臺上可能安裝下列庫:

            v libevent_pthreads:添加基于pthread可移植線程庫的線程和鎖定實現。它獨立于libevent_core,這樣程序使用libevent時就不需要鏈接到pthread,除非是以多線程方式使用libevent。

            v libevent_openssl:這個庫為使用bufferevent和OpenSSL進行加密的通信提供支持。它獨立于libevent_core,這樣程序使用libevent時就不需要鏈接到OpenSSL,除非是進行加密通信。

            3 頭文件

            libevent公用頭文件都安裝在event2目錄中,分為三類:

            v API頭文件:定義libevent公用接口。這類頭文件沒有特定后綴。

            v 兼容頭文件:為已廢棄的函數提供兼容的頭部包含定義。不應該使用這類頭文件,除非是在移植使用較老版本libevent的程序時。

            v 結構頭文件:這類頭文件以相對不穩定的布局定義各種結構體。這些結構體中的一些是為了提供快速訪問而暴露;一些是因為歷史原因而暴露。直接依賴這類頭文件中的任何結構體都會破壞程序對其他版本libevent的二進制兼容性,有時候是以非常難以調試的方式出現。這類頭文件具有后綴“_struct.h”。

            (還存在不在event2目錄中的較老版本libevent的頭文件,請參考下節:如果需要使用老版本libevent)

            4 如果需要使用老版本libevent

            libevent 2.0以更合理的、不易出錯的方式修正了API。如果可能,編寫新程序時應該使用libevent 2.0。但是有時候可能需要使用較老的API,例如在升級已存的應用時,或者支持因為某些原因不能安裝2.0或者更新版本libevent的環境時。

            較老版本的libevent頭文件較少,也不安裝在event2目錄中。

            在2.0以及以后版本的libevent中,老的頭文件仍然會作為新頭文件的封裝而存在。

            其他關于使用較老版本的提示:

            v 1.4版之前只有一個庫libevent,它包含現在分散到libevent_core和libevent_extra中的所有功能。

            v 2.0版之前不支持鎖定:只有確定不同時在多個線程中使用同一個結構體時,libevent才是線程安全的。

            下面的節還將討論特定代碼區域可能遇到的已經廢棄的API。

            5 關于版本狀態的提示

            1.4.7及以前版本應該被認為是完全廢棄的。1.3之前的版本應該被認為是充滿bug的。

            (此外,不要向libevent維護者發送任何關于1.4.x或者更早版本的新特征,這些版本被認為是穩定的發布版本。如果在1.3x或者更早版本中發現bug,在報告之前請確定在最新的穩定發布版本中問題仍然存在:后續發布可能已經解決了問題。)


             

            国产欧美久久一区二区| 久久强奷乱码老熟女| 久久精品午夜一区二区福利| 久久国产精品无码HDAV | 久久精品99久久香蕉国产色戒 | 国产欧美久久久精品影院| 久久亚洲精品无码VA大香大香| 丁香色欲久久久久久综合网| 7国产欧美日韩综合天堂中文久久久久| 精品久久人人做人人爽综合| 亚洲精品无码久久久久sm| 国产精品久久久天天影视香蕉 | 国产精品成人无码久久久久久 | 久久精品国产亚洲av麻豆蜜芽 | 久久人妻无码中文字幕| 久久精品中文字幕久久| 伊人久久综合无码成人网| 大蕉久久伊人中文字幕| 久久精品国产亚洲AV麻豆网站| 久久国产视屏| 高清免费久久午夜精品| 亚洲精品乱码久久久久久按摩| 久久人人爽人人精品视频| 久久综合丁香激情久久| 亚洲av日韩精品久久久久久a| 久久99久久成人免费播放| 国产精品久久久久久久久免费| 国内精品久久久久影院薰衣草| 亚洲国产成人久久精品99| 亚洲嫩草影院久久精品| 久久精品亚洲一区二区三区浴池| 久久精品国产亚洲av麻豆蜜芽| 亚洲国产成人久久精品99| 青青热久久国产久精品| 久久精品国产99久久久香蕉| 国产精品VIDEOSSEX久久发布| 国产午夜久久影院| 国产精品久久亚洲不卡动漫| 成人妇女免费播放久久久| 国产精品岛国久久久久| 国内精品久久久人妻中文字幕|