代码:
//hello.cpp
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <iostream>
boost::mutex io_mutex;
#define __NR_gettid 186
class ABCD {
public:
//第一种方式
static void count1(int id1, int id2, const char* pcszStr) {
for (int i = 0; i < 100; ++i) {
boost::mutex::scoped_lock lock(io_mutex);
std::cout<<"[" << syscall(__NR_gettid) << "]" << id1 << "," << id2 << "," << pcszStr << ": " << i << std::endl;
}
}
//第二种方式
void count2(int id1, int id2, const char* pcszStr) {
for (int i = 0; i < 100; ++i) {
boost::mutex::scoped_lock lock(io_mutex);
std::cout<<"[" << syscall(__NR_gettid) << "]" << id1 << "," << id2 << "," << pcszStr << ": " << i << std::endl;
}
}
void startthread1() {
boost::thread thrd1(&ABCD::count1,1,10,"hello");
boost::thread thrd2(&ABCD::count1,2,20,"world");
thrd1.join();
thrd2.join();
return;
}
void startthread2() {
boost::thread thrd1(&ABCD::count2,this,3,30,"hello");
boost::thread thrd2(&ABCD::count2,this,4,40,"world");
thrd1.join();
thrd2.join();
return;
}
};
int main(int argc, char* argv[])
{
ABCD aa;
aa.startthread1();
aa.startthread2();
return 0;
}
编译:
g++ hello.cpp -lboost_thead -lboost_system