如題,代碼如下:
#include <iostream>
#include <boost/thread.hpp>
#include <boost/bind.hpp>
using namespace std;
class BoostThread
{
public:
BoostThread() {}
void StartThread() {
m_thread.reset(new boost::thread(boost::bind(&BoostThread::Thread, this)));
}
void StopThread() {
if(m_thread) {
m_thread->interrupt();
}
}
private:
void Thread() {
int i = 0;
while (true) {
i++;
boost::this_thread::interruption_point();
cout<<"i = "<<i<<endl;
boost::this_thread::sleep(boost::posix_time::seconds(1));
}
}
boost::shared_ptr<boost::thread> m_thread;
};
int main()
{
cout << "Hello World!" << endl;
BoostThread boost;
boost.StartThread();
cout<<"stop ?(y/n) : ";
char ch;
if(cin>>ch && ch=='y') {
boost.StopThread();
}
return 0;
}
編譯時需要添加:-lboost_system -lboost_thread