日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時(shí)間:2025/6/17 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 boost::threadpool 调用类成员变量并传入参数 的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 首先到官網(wǎng)下載

http://threadpool.sourceforge.net/ 2. 包含頭文件 #include?"../boost/threadpool.hpp" ? ? ? 3. 聲明threadpool對(duì)象,? ? boost::threadpool::fifo_pool?m_poolCmdProcess; ? 上面聲明了一個(gè)FIFO線程池, 即先進(jìn)先出 ? 4. 聲明一個(gè)Runnable適配類 來包裝你的類及成員函數(shù) ? ? ? ? ? ? ? ? ??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 聲明了一個(gè)函數(shù)模板, 此模板應(yīng)該和你要關(guān)聯(lián)的類成員函數(shù)類型一致。 ? 5. 調(diào)用threadpool的schedule方法 啟動(dòng)線程 ? ? ? ???????????????????????????????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頭文件有錯(cuò)誤, 需要我們改動(dòng)源碼(注釋的為原來代碼,下面的為改動(dòng)后的代碼), 具體為: ? ??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)); ??? }? ? ? ? ??

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。