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

Jac*_*ble 4 c++ multithreading boost

我在使用boost :: bind和创建线程时遇到了一些问题.

基本上,我想使用bind在"Scanner"对象上调用"扫描"功能.

像这样的东西:

  Scanner scanner;
   int id_to_scan = 1;

   boost::thread thr1(boost::bind(&scanner::scan));
Run Code Online (Sandbox Code Playgroud)

但是,我在语法上被绊倒了.如何将数据传递到扫描中?作为构造函数的一部分?

Jer*_*nes 9

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

所以如果你想打电话:

scanner* s;
s->scan()
Run Code Online (Sandbox Code Playgroud)

使用绑定你会使用:

boost::bind(&scanner::scan, s);
Run Code Online (Sandbox Code Playgroud)

如果你想打电话:

s->scan(42);
Run Code Online (Sandbox Code Playgroud)

用这个:

boost::bind(&scanner::scan, s, 42);
Run Code Online (Sandbox Code Playgroud)

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

boost::bind(&scanner::scan, this);
Run Code Online (Sandbox Code Playgroud)

祝好运.