一.头文件
#include "Runable.h"
#include <boost/thread/thread.hpp>
class Production : public Runable
{
public:
Production();
~Production(void);
public:
int Prepare();
int Start();
int Stop();
private:
void Run();
boost::thread* mThread;
};
二. Start函数
int Production::Start()三. Stop函数
{
mThread = new boost::thread( boost::bind(&Production::Run, this) );
cout << "Thread created with ID: " << mThread->get_id() << endl;
return 0;
}
int Production::Stop()
{
cout << "Interrupt thread with ID: " << mThread->get_id() << endl;
/** 向线程发送中断请求 */
mThread->interrupt();
cout << "Joining thread..." << endl;
/** join函数,作用是等待直到线程执行结束;可不加,但不能保证退出Destroy函数前线程被终结 */
mThread->join();
/** 通过该语句可以判断线程先退出还是Destroy函数先退出 */
cout << "Leave Destroy Function." << endl;
return 0;
}
四. Run函数
void Production::Run()
{
while(1)
{
/** 手动在线程中加入中断点,中断点不影响其他语句执行 */
boost::this_thread::interruption_point();
BurrControl();
}
}