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)
但是,我在语法上被绊倒了.如何将数据传递到扫描中?作为构造函数的一部分?
请记住,任何成员函数的第一个参数是对象.
所以如果你想打电话:
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)
祝好运.
| 归档时间: |
|
| 查看次数: |
756 次 |
| 最近记录: |