[英]How to create a boost thread with data?
我在使用boost :: bind和创建线程时遇到了一些问题。
基本上,我想使用bind在“Scanner”对象上调用“扫描”功能。
像这样的东西:
Scanner scanner;
int id_to_scan = 1;
boost::thread thr1(boost::bind(&scanner::scan));
但是,我在语法上被绊倒了。 如何将数据传递到扫描中? 作为构造函数的一部分?
请记住,任何成员函数的第一个参数是对象。
所以如果你想打电话:
scanner* s;
s->scan()
使用绑定你会使用:
boost::bind(&scanner::scan, s);
如果你想打电话:
s->scan(42);
用这个:
boost::bind(&scanner::scan, s, 42);
因为我经常希望在创建绑定对象的对象上调用bind,所以我经常这样做:
boost::bind(&scanner::scan, this);
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.