我想知道为什么以下程序会崩溃。如何使用awaitable
not with boost::asio::async_write
/async_read
功能。
让我们来看看:
#include <iostream>
#include <boost/asio/io_context.hpp>
#include <boost/asio/co_spawn.hpp>
#include <boost/asio/detached.hpp>
using boost::asio::io_context;
using boost::asio::co_spawn;
using boost::asio::awaitable;
using boost::asio::detached;
awaitable<void> task() {
std::cout << "hello" << std::endl;
return awaitable<void>{};
}
int main() {
try {
boost::asio::io_context io_context(1);
co_spawn(io_context, task(), detached);
io_context.run();
} catch(const std::exception &ex) {
std::cerr << ex.what() << std::endl;
}
return 0;
}
这导致
hello
(Segmentation fault)
它有什么问题?
UPD:自行解决。我应该只使用co_return
. 因此,它必须是以下内容:
awaitable<void> task() {
std::cout << "hello" << std::endl;
co_return;
}