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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

boost::threadpool 调用类成员变量并传入参数 的方法

發布時間:2025/6/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 boost::threadpool 调用类成员变量并传入参数 的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 首先到官網下載

http://threadpool.sourceforge.net/ 2. 包含頭文件 #include?"../boost/threadpool.hpp" ? ? ? 3. 聲明threadpool對象,? ? boost::threadpool::fifo_pool?m_poolCmdProcess; ? 上面聲明了一個FIFO線程池, 即先進先出 ? 4. 聲明一個Runnable適配類 來包裝你的類及成員函數 ? ? ? ? ? ? ? ? ??class?Runnable ????????????????{ ????????????????????????????????typedef?boost::function<void?(/*CCommunicationMap*, */ICommandContextEx*)> function; ? ????????????????private: ????????????????????????????????function?_f; ????????????????????????????????CCommunicationMap*?_target; ????????????????????????????????ICommandContextEx*?_data; ? ????????????????public: ????????????????????????????????template<class?F> ????????????????????????????????Runnable(CCommunicationMap*?target,?F?f,?ICommandContextEx*?data) ????????????????????????????????{ ????????????????????????????????????????????????_f?=?f; ????????????????????????????????????????????????_target?=?target; ????????????????????????????????????????????????_data?=?data; ????????????????????????????????} ? ????????????????????????????????~Runnable(){} ? ????????????????????????????????void?run() ????????????????????????????????{ ????????????????????????????????????????????????//_target->TestCommand(_data); ????????????????????????????????????????????????_f(/*_target, */_data); ????????????????????????????????} ????????????????}; ?? ? 上面 function 聲明了一個函數模板, 此模板應該和你要關聯的類成員函數類型一致。 ? 5. 調用threadpool的schedule方法 啟動線程 ? ? ? ???????????????????????????????boost::function<void?(/*CCommunicationMap*, */ICommandContextEx*)>? ? ?fun; ????????????????????????????????fun?=??boost::bind(&CCommunicationMap::TestCommand, &m_communication,?_1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??Runnable*?run?=?new?Runnable(&m_communication,??fun,?pContext); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?boost::threadpool::schedule(m_poolCmdProcess,?boost::shared_ptr<Runnable>(run)); ? ? 注意:? threadpool庫中的pool_adaptors.hpp頭文件有錯誤, 需要我們改動源碼(注釋的為原來代碼,下面的為改動后的代碼), 具體為: ? ??template<typename?Pool,?typename?Runnable> ????bool?schedule(Pool&?pool,?shared_ptr<Runnable>?const?&?obj) ??? {?????????? ????????????????????????????????//return pool->schedule(bind(&Runnable::run, obj)); ????????????????????????????????return?pool.schedule(bind(&Runnable::run,?obj)); ??? }? ? ? ? ??

總結

以上是生活随笔為你收集整理的boost::threadpool 调用类成员变量并传入参数 的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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