如何用数据创建一个boost线程?

时间:2009-04-28 04:20:01

标签: c++ multithreading boost

我遇到了一些关于boost :: bind和创建线程的问题。

基本上,我想在“扫描仪”对象上调用“扫描”功能,使用 绑定。

这样的事情:

  Scanner scanner;
   int id_to_scan = 1;

   boost::thread thr1(boost::bind(&scanner::scan));

然而,我正在惹恼语法。如何将数据传递到扫描中?作为构造函数的一部分?

1 个答案:

答案 0 :(得分:9)

请记住,任何成员函数的第一个参数都是对象。

所以如果你想打电话:

scanner* s;
s->scan()
使用绑定

boost::bind(&scanner::scan, s);

如果你想打电话:

s->scan(42);

使用它:

boost::bind(&scanner::scan, s, 42);

因为我经常希望在创建绑定对象的对象上调用bind,所以我经常这样做:

boost::bind(&scanner::scan, this);
祝你好运。