我现在用的是unique_ptr。等折腾完手头的另一个问题,换回去试试。
这个问题更诡异点,在join boost asio的worker线程时会崩,worker线程设为1个也会。目前看起来是个编译环境问题(arm64上musl + gcc + boost),也影响到了m_timer的初始化。
跟这个report几乎一样:
https://marc.info/?l=boost-bugs&m=137997373100783&w=2
试了把boost::thread换为std::thread就没这个崩溃问题了
class CMyClass
{
public:
CMyClass()
{
m_io_context = std::make_unique<boost::asio::io_context>();
m_timer = std::make_unique<boost::asio::deadline_timer>(*m_io_context);
}
~CMyClass() {
m_timer->reset();
m_io_context->reset();
}
private:
std::unique_ptr<boost::asio::io_context> m_io_context;
std::unique_ptr<boost::asio::deadline_timer> m_timer;
};
【 在 ziqin 的大作中提到: 】
: boost::asio::io_context m_io_context = {};
:
【 在 mango7788 的大作中提到: 】
: 加一个 m_io_context() 呢?
--
修改:z16166 FROM 221.218.163.*
FROM 221.218.163.*