// 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;
}
boost 线程学习bind
最新推荐文章于 2024-07-17 22:50:33 发布