boost::thread使用引用参数

原创 2015年11月18日 09:34:42

boost::thread到bind始终是使用copy方式,不管是值类型还是引用类型的指针,都是用copy方式传递,导致结果无法取得。

例如:

void ReceiveMessage(int msgID, void* data, long timeout)
void* retdata = NULL;
boost::thread th2(boost::bind(&ReceiveMessage, 1, retdata, 1));

返回后,retdata指针始终没有内容。

正确做法:

void ReceiveMessage(int msgID, void*& data, long timeout)
void* retdata = NULL;
boost::thread th2(boost::bind(&ReceiveMessage, 1, boost::ref(retdata), 1));

注意点:函数需要用引用参数方式,同时加上boost::ref就能解决这个问题。









C++并发实战3:向thread传递参数

在创建thread object时可以向线程传递参数,默认情况下,参数会被拷贝到线程空间以供线程执行时存取,即使参数是引用也是这样。 情形1: void f(int i,std::string con...
  • liuxuejiang158
  • liuxuejiang158
  • 2013年12月03日 15:01
  • 7592

类的非静态成员函数做boost::thread参数

void PosixClientImpl::Start() {   m_thread = boost::thread(boost::bind(&PosixClientImpl::processMe...
  • lizhi200404520
  • lizhi200404520
  • 2014年07月21日 12:35
  • 2065

Boost::Thread使用示例

(1)最简单方法#include #include boost::mutex io_mutex; void hello() { std::cout
  • zhuxiaoyang2000
  • zhuxiaoyang2000
  • 2011年07月06日 14:48
  • 42908

Boost::thread库的使用

Boost::thread库的使用2009/11/26Kagula  阅读对象本文假设读者有几下Skills[1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念。[2]熟悉C++开...
  • lee353086
  • lee353086
  • 2009年10月15日 05:12
  • 22717

boost线程间通信和传递参数

当需要线程等待某个事物时,可以创建一个condition对象,然后通过这个对象来通知那些等待的线程。 #include #include #include #include #inc...
  • twtydgo
  • twtydgo
  • 2016年06月15日 16:08
  • 1250

Boost::Thread使用示例

源地址:http://blog.csdn.net/zhuxiaoyang2000/article/details/6588031/  Boost::Thread的实现总体上是比较简单的,前面已...
  • lx_shudong
  • lx_shudong
  • 2017年01月16日 17:55
  • 677

Boost::thread库的使用

概要 通过实例介绍boost thread的使用方式,本文主要由线程启动、Interruption机制、线程同步、等待线程退出、Thread Group几个部份组成。 正文 线程...
  • yockie
  • yockie
  • 2013年06月26日 19:32
  • 7289

boost thread使用方法

一、创建一个线程 创建线程    boost::thread myThread(threadFun);    需要注意的是:参数可以是函数对象或者函数指针。并且这个函数无参数,并返回void类型...
  • u013982161
  • u013982161
  • 2016年11月12日 15:29
  • 2496

boost::bind参数例子使用

bind并不是一个单独的类或函数,而是非常庞大的家族,依据绑定的参数个数和要绑定的调用对象类型,总共有十个不同的形式,但它们的名字都叫bind. bind接受的第一个参数必须是一个可调用对象f,包...
  • giepy
  • giepy
  • 2015年04月14日 19:36
  • 615

BOOST 线程完全攻略 - 基础篇

     C++多线程开发是一个复杂的事情,mfc下提供了CWinThread类,和AfxBeginThread等等函数,但是在使用中会遇到很多麻烦事情,例如线程之间参数传递的问题,我们一般都是把参数...
  • IamNieo
  • IamNieo
  • 2008年09月10日 12:48
  • 25850
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boost::thread使用引用参数
举报原因:
原因补充:

(最多只允许输入30个字)