通过boost::bind实现c++多线程

时间:2022-06-05 20:02:33

一.头文件

#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()
{
mThread = new boost::thread( boost::bind(&Production::Run, this) );
cout << "Thread created with ID: " << mThread->get_id() << endl;
return 0;
}
三. Stop函数
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();
}
}