acl 3.0.19 版本 (項目主頁:https://sourceforge.net/projects/acl/,技術文章主頁:http://zsxxsz.iteye.com/ ) 發佈了,acl 是 one advanced C/C++ library 的簡稱,主要包括網絡通訊庫以及服務器框架庫等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平臺;整個 acl 項目主要包含三個函數庫:lib_acl(純C開發的基礎庫,主要包含網絡通訊及服務器編程框架以及其它豐富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通訊協議的C語言實現)、lib_acl_cpp(基於 lib_acl 及 lib_protocol 兩個C庫,提供了更爲強大的編程接口及豐富的功能類);本次 acl 升級主要包含一些 BUG 修復及功能特性增長。
acl 包括如下豐富的經常使用函數庫:
一、常見網絡應用庫: SMTP 客戶端庫/PING 庫/memcache 客戶端庫/handlersocket 客戶端庫/beanstalk 客戶端庫
二、HTTP 網絡庫:HTTP 客戶端/服務端庫,C++版 HttpServlet 類,HTTP COOKIE/HTTP SESSION 等
三、郵件解析庫:mime解析庫/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
四、網絡通訊庫:阻塞/非阻塞網絡 IO 庫(其中 lib_acl_cpp 庫經過嵌入 polarssl 而具有了 SSL 的能力)
五、服務器框架:包括進程池模式、線程池模式、非阻塞模式、UDP通訊模式及觸發器模式
六、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
七、通用鏈接池庫:高效的鏈接池基礎類庫,支持豐富的功能
八、數據庫客戶端庫:對原生的數據庫客戶端庫進行了二次封裝,使編程更爲簡易,功能更爲豐富
九、xml/json 流式解析庫:區別於網上其它已有的 xml/json 解析庫,acl 中的 xml/json 解析庫採用有限狀態機方式解析數據,處理方式更爲靈活
1、基礎 C 庫:lib_acl
.新特性:acl_scan_dir.c 增長了一些功能接口
.新特性:服務器框架 acl_master 支持非 root 用戶身份運行
.性能優化:線程池庫(acl_pthread_pool.c), worker_wait() 函數將空閒線程添加至線程池和從線程池中移除的操做放在 pthread_cond_timedwait 等待循環的外面,這樣既能夠減小添加/移除操做的次數,同時又可使等待任務超時的線程早晚地退出
.刪除:去掉了 acl_ioctl_app_main.c/acl_aio_app_main.c,將 acl_aio_app_main.c 功能分別合併至 acl_aio_server.c 中;將 acl_ioctl_server.c 的接口申明爲過時,建議用戶使用 acl_threads_server.c 中的功能接口
.問題修復:acl_vstream.c 中函數 acl_vstream_ftell 問題修復
.問題修復:acl_aqueue.c 異步線程消息隊列支持無限等待方式
2、lib_protocol 庫
.問題修復:http_hdr_req.c 中函數 http_hdr_req_cookies_parse 解析處理 cookie 時存在內存衝突
3、lib_acl_cpp 庫
.新特性:文件類 fstream(fstream.cpp)增長了 ftell 方法,用來表示當前文件指針位置
.新特性:鏈接類 connect_client(connect_client.cpp)增長了設置/獲取鏈接池對象的方法
.新特性:字符串類 string(string.cpp)增長了多個功能接口,方便對字符串的操做
.新特性:增長了目錄掃描類 scan_dir(scan_dir.cpp),能夠很是方便地對目錄進行掃描等操做
.新特性:鏈接池管理類 connect_manager(connect_manager.cpp)增長了鏈接池故障自動恢復功能
.問題修復:異步處理服務器類 master_aio(master_aio.cpp)在析構函數中不該調用異步處理函數,不然會引發內存衝突
.問題修復:http 處理類 http_client(http_client.cpp) 構造函數中未對緩衝區 buf_ 初始化,當調用 reset 方法會形成內存衝突
參考連接:
技術博客:http://zsxxsz.iteye.com/
download:http://sourceforge.net/projects/acl/
svn:svn checkout svn://svn.code.sf.net/p/acl/code/trunk acl-code
github:https://github.com/zhengshuxin/acl
QQ 羣:242722074linux