当前位置:编程学习 > C/C++ >>

boost线程使用带参数的类成员函数方法

假设类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)里面也介绍了一个给线程函数传递参数的方法,不过比这个方法麻烦一些,我也没有试验过是不是可以用在类对象的成员函数上。
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,