我有一个关于 boost asio 计时器和安全线程工作的问题。假设,我有以下课程:
CTest.h:
class CTest
{
boost::asio::io_service io;
boost::asio::deadline_timer timer;
void Check();
CTest ();
~CTest ();
};
和 CTest.cpp:
CTest::CTest():
timer (io, boost::posix_time::seconds(0))
{
timer.async_wait(boost::bind(&CTest::Check, this));
boost::thread t(boost::bind(&boost::asio::io_service::run, &io));
}
void CTest::Check()
{
//some work
m_timer.expires_from_now(boost::posix_time::seconds(10));
m_timer.async_wait(boost::bind(&CTest::Check, this));
}
CTest::~CTest()
{
io.stop();
}
那么,问题是如何完成检查线程安全?我的意思是,这个 Check 函数可以在析构函数之后调用,我们会崩溃。