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就能解决这个问题。









相关文章推荐

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

void PosixClientImpl::Start() {   m_thread = boost::thread(boost::bind(&PosixClientImpl::processMe...

Boost::Thread使用示例

(1)最简单方法#include #include boost::mutex io_mutex; void hello() { std::cout

boost线程间通信和传递参数

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

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

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

<Boost> boost::thread 多线程的使用

boost::thread参考帮助文档:http://www.boost.org/doc/libs/1_57_0/doc/html/thread.html 1. Windows的多线程 参考博文:...

boost::bind绑定成员函数时,第一个参数传递对象的特殊情况

boost::bind绑定成员函数时,第一个参数传递对象的特殊情况 boost::bind(&memberfunction, obj, _1, _2........)类似这样的用法,我们叫做成员函数...

Boost::thread 用法(网络socket引用)TCPIP编程

最终是要使用boost::thread库调度网络编程,tCP套接字。先热热身,参考,参考网上原有的资料。 boost::thread有两个构造函数: (1)thread():构造一个表示当前...

Boost.asio的简单使用(timer,thread,io_service类)

2. 同步Timer 本章介绍asio如何在定时器上进行阻塞等待(blocking wait). 实现,我们包含必要的头文件. 所有的asio类可以简单的通过include "asio.hp...

Boost::thread库的使用

http://blog.csdn.net/lee353086/article/details/4673790   阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程...
  • hbhhww
  • hbhhww
  • 2012年04月17日 18:36
  • 970

尽量不要在生产环境代码中使用boost::this_thread::sleep

/********************************************************/ /*Author:fyu0609@csdn.net ...
  • fyu0609
  • fyu0609
  • 2013年08月04日 20:59
  • 1497
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:boost::thread使用引用参数
举报原因:
原因补充:

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