代码之家  ›  专栏  ›  技术社区  ›  jonderry

如何从在对象的成员函数中开始执行的C++升力线程组中创建一个新线程?

  •  0
  • jonderry  · 技术社区  · 14 年前

    有一些成员变量和互斥体与对象关联,因此使用成员函数比使用独立函数更容易。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Cheers and hth. - Alf    14 年前

    提供一个 operator() 成员FUNC。

    编辑 就像…

    #include <boost/thread.hpp>
    #include <boost/bind.hpp>
    #include <iostream>
    
    struct MyThread
    {
        int x;
    
        MyThread(): x( -1 ) {}
        void run()      // Name doesn't matter.
        {
            x = 42;
        }
    };
    
    int main()
    {
        namespace b = boost;
        using namespace std;
    
        MyThread        t;
        b::thread_group g;
    
        g.create_thread( b::bind( &MyThread::run, &t ) ) ;
        // ... whatever
        g.join_all();
        cout << t.x << endl;    
    }
    

    免责声明:我不熟悉Boost线程。这个例子是在答案被接受之后添加的。