boost 线程学习bind

// g++ thread.cpp -lboost_system -lboost_thread
#include <iostream>
#include <string>
#include <boost/thread.hpp>
#include <boost/bind.hpp>
 
using namespace std;
 
class myclass {
  public:
    string str_;
    int num_;
 
    myclass(string s, int n) {str_ = s; num_ = n;};
 
    void run1() {
      for(int i=0; i<num_; i++) {
        cout<<"Thread "<<str_<<" print : "<<i<<endl;
      }
    };
 
    void run2() {
      for(int i=0; i<num_; i++) {
        cout<<"Thread "<<toString()<<" print : "<<i<<endl;
      }
    };
 
    void run3(string str) {
      for(int i=0; i<num_; i++) {
        cout<<"Thread "<<toString()<<" print : "<<i<<" "<<str<<endl;
      }
    };
 
    string toString() {
      string str = "["+str_;
      str += "]";
      return str;
    };
};
 
int main (int argc, char ** argv) {
  myclass c1("A", 5);
  myclass c2("B", 5);
  myclass c3("C", 5);
 
  boost::thread t1(boost::bind(
        &myclass::run1,                // pointer to member function to execute in thread
        &c1 ));                        // pointer to instance of class
 
  boost::thread t2 (boost::bind(
        &myclass::run2,                // pointer to member function to execute in thread
        &c2 ));                        // pointer to instance of class
 
  boost::thread t3 (boost::bind(
        &myclass::run3,                // pointer to member function to execute in thread
        &c3,                           // pointer to instance of class
        "Hey!" ));                     // parameter to run3(string str)
 
  cout<<"In the middle of main()"<<endl;
 
  t1.join();
  t2.join();
  t3.join();
 
  cout<<"In the end of main()"<<endl;
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值