改之前是这样的,单开一个线程执行run。
m_thread = new std::thread([&]() { m_io->run(); });
本来这种单线程带超时的,用select()搞一下就行。用asio是杀鸡用牛刀了。
【 在 ziqin 的大作中提到: 】
: 1. 你的代码里没有看见io_context.run()在哪儿,你说把io_context.run放到WaitEvent之前,是指你手动改的代码?那你原来代码里io_context.run()是在哪儿运行的?
: 2. 如果你至始至终只有一个线程运行io_context.run(),那显然你不能阻塞这个线程。因为io_context本身不是thread_pool,是不带worker的,哪个线程运行run,哪个线程是worker,io_context本身只是一个事件队列而已。
:
--
修改:z16166 FROM 222.131.206.*
FROM 222.131.206.*