日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

boost之对象池使用实例

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 boost之对象池使用实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個主要用在http使用tcp支持短連接的情況,能快速獲取連接對象而不用反復申請釋放資源

#ifndef OBJECT_POOL_H #define OBJECT_POOL_H#include "boost_comm.h"#include "message_header.h" #include "tcp_client.h"namespace seemmo {//template<object_type>class object_pool{public:object_pool();~object_pool();protected:static object_pool *instance(){static object_pool inst;return &inst;} private:boost::mutex mtx2_;public:static boost::mutex * alloc_mutex();static void free_mutex(boost::mutex *src);private:boost::mutex mtx3_;public:static tcp_client* alloc_client();static void free_client(tcp_client *src);private:boost::mutex mtx4_;public:static result_data * alloc_data(string cardid, float score, string params[]);static void free_data(result_data *src);private:boost::mutex mtx5_;public:static ret_result *alloc_result(std::string code, std::string msg, int n = 100);static void free_result(ret_result *src);protected:boost::object_pool<boost::mutex> mtx_obp_;boost::object_pool<tcp_client> obp_client_;boost::object_pool<result_data> obp_data_;boost::object_pool<ret_result> obp_result_;private:}; }#endif // OBJECT_POOL_H
#include "object_pool.h"namespace seemmo {object_pool::object_pool(){}object_pool::~object_pool(){}boost::mutex * object_pool::alloc_mutex(){boost::unique_lock<boost::mutex> wlock(instance()->mtx2_);return instance()->mtx_obp_.construct();}void object_pool::free_mutex(boost::mutex *src){boost::unique_lock<boost::mutex> wlock(instance()->mtx2_);instance()->mtx_obp_.destroy(src);}tcp_client* object_pool::alloc_client(){boost::unique_lock<boost::mutex> wlock(instance()->mtx3_);return instance()->obp_client_.construct();}void object_pool::free_client(tcp_client *src){boost::unique_lock<boost::mutex> wlock(instance()->mtx3_);instance()->obp_client_.destroy(src);}result_data * object_pool::alloc_data(string cardid, float score, string params[]){boost::unique_lock<boost::mutex> wlock(instance()->mtx4_);return instance()->obp_data_.construct(cardid, score, params);}void object_pool::free_data(result_data *src){boost::unique_lock<boost::mutex> wlock(instance()->mtx4_);instance()->obp_data_.destroy(src);}ret_result *object_pool::alloc_result(std::string code, std::string msg, int n /* = 100 */){boost::unique_lock<boost::mutex> wlock(instance()->mtx5_);return instance()->obp_result_.construct(code, msg, n);}void object_pool::free_result(ret_result *src){boost::unique_lock<boost::mutex> wlock(instance()->mtx5_);instance()->obp_result_.destroy(src);} }

總結

以上是生活随笔為你收集整理的boost之对象池使用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。