gpt4 book ai didi

boost - 加入线程 : "resource deadlock avoided"

转载 作者:行者123 更新时间:2023-12-02 16:57:06 26 4
gpt4 key购买 nike

我使用封装了 boost::asio::io_service 的 C++ 类。

class IoService {
public:
static IoService& getInstance() {
static IoService instance;
return instance;
}
void start() {
_ioServiceThread = std::thread(&IoService::run, this);
}
void stop() {
_ioService.stop();
_ioServiceThread.join();
}
void run() {
_ioService.run();
}

private:
IoService();
~IoService();
IoService(const IoService& old) = delete;
IoService(const IoService&& old) = delete;
IoService& operator=(const IoService& old) = delete;
IoService& operator=(const IoService&& old) = delete;

boost::asio::io_service _ioService;
std::thread _ioServiceThread;
};

但是当我调用停止方法时,程序在连接时崩溃了:

terminate called after throwing an instance of 'std::system_error'
what(): Resource deadlock avoided
Aborted

你怎么看?

最佳答案

这是您在线程尝试加入自身时遇到的错误。

所以听起来您的问题是您从 io_service 调用的处理函数调用 stop() 方法。

关于boost - 加入线程 : "resource deadlock avoided",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56007421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com