程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> boost線程使用帶參數的類成員函數方法

boost線程使用帶參數的類成員函數方法

編輯:C++入門知識

假設類VZController有成員函數如下:   [cpp]   void downloadData(std::string filename);     需要將下載數據的部分放到一個單獨的線程去執行下載過程,但文件的保存需要通過主線程指定,如何實現?   可以借助boost::function和boost::bind來生成一個包裝函數對象,然後對函數對象進行參數綁定實現,具體代碼如下:       [cpp]   #include <boost/bind.hpp>   #include <boost/function.hpp>   #include <boost/thread/thread.hpp>       ...             std::string localFileName = "D:\\temp\\dl.dat";        boost::function<void (std::string)> memberFunctionWrapper(boost::bind(&VZController::downloadData, this, _1));     boost::thread downloadThread = new boost::thread(boost::bind(memberFunctionWrapper, localFileName));         ...      如果要傳遞多個參數的話,也很方便,把函數對象的定義改一下就可以。   “Boost線程庫學習筆記”(http://www.cnblogs.com/younes/archive/2010/06/06/1752745.html)裡面也介紹了一個給線程函數傳遞參數的方法,不過比這個方法麻煩一些,我也沒有試驗過是不是可以用在類對象的成員函數上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved