boost_thread 創建線程與關閉線程

如題,代碼如下:

#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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章