Trong khi đọc tài liệu của coroutine2
Tôi tìm thấy một đẹp snippet mã cho thấy làm thế nào để sử dụng nó với asio
tăng ASIO và gương coroutine2
Để tham khảo ở đây là mã từ tài liệu:
void session(boost::asio::io_service& io_service){
// construct TCP-socket from io_service
boost::asio::ip::tcp::socket socket(io_service);
try{
for(;;){
// local data-buffer
char data[max_length];
boost::system::error_code ec;
// read asynchronous data from socket
// execution context will be suspended until
// some bytes are read from socket
std::size_t length=socket.async_read_some(
boost::asio::buffer(data),
boost::asio::yield[ec]);
if (ec==boost::asio::error::eof)
break; //connection closed cleanly by peer
else if(ec)
throw boost::system::system_error(ec); //some other error
// write some bytes asynchronously
boost::asio::async_write(
socket,
boost::asio::buffer(data,length),
boost::asio::yield[ec]);
if (ec==boost::asio::error::eof)
break; //connection closed cleanly by peer
else if(ec)
throw boost::system::system_error(ec); //some other error
}
} catch(std::exception const& e){
std::cerr<<"Exception: "<<e.what()<<"\n";
}
}
Tuy nhiên Tôi không thể tìm thấy ví dụ hoạt động trên tài liệu asio và cố gắng biên dịch đoạn mã này trên coliru cho tôi lỗi trình biên dịch liên quan đến yield
Bạn có biết thực thi máy khách/máy chủ tối thiểu sử dụng coroutine2
như được hiển thị trong ví dụ ở trên?
ví dụ trong tài liệu coroutine2 là gây hiểu lầm sau đó. Đó là quá xấu, nó sẽ là tuyệt vời để có nó hỗ trợ. –
Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. - [Từ đánh giá] (/ review/low-quality-posts/14285746) – kiamlaluno
@kiamlaluno với tôi, nó trả lời câu hỏi này – Danh