【问题标题】:How to create a boost thread with data?如何使用数据创建提升线程?
【发布时间】:2009-04-28 04:20:01
【问题描述】:

我在 boost::bind 和创建线程方面遇到了一些问题。

本质上,我想在“扫描仪”对象上调用“扫描”函数,使用 绑定。

类似这样的:

  Scanner scanner;
   int id_to_scan = 1;

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

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

【问题讨论】:

    标签: c++ multithreading boost


    【解决方案1】:

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

    所以如果你想打电话:

    scanner* s;
    s->scan()
    

    你会使用绑定:

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

    如果你想打电话:

    s->scan(42);
    

    使用这个:

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

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

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

    祝你好运。

    【讨论】:

    • 我不配:)谢谢!
    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2019-09-11
    相关资源
    最近更新 更多