??????orchid?У?Э???main?????????????????void(orchid::coroutine_handle)????handle_accept????????в???co??Э????????????????????λ???Э???

???????????????У?????????????acceptor????????????5678?????????"????"????????????????????????????????????μ?Э?????????μ?socket???????????IO??Э?????£?


//????SOCKET IO?????Э?? void handle_io(orchid::coroutine_handle co??socket_ptr sock) {
orchid::tcp_ostream out(*sock??co);
orchid::tcp_istream in(*sock??co);
for(std::string str;std::getline(in?? str) && out;) {
out<
}
}


????IO????Э?????????????????????????????????????????????????????TCP??????????????????????????ж????У????????????????С???socket???TCP????????????????????????eof????????λ??????????????Э???????

????orchid?????????????????????????????????????????????????std::istream??std::ostream????;??????????????????????????????????????дsocket??????????壬??????????orchid::socket??read??write???????????????????????????????boost::system_error???????????

??????????????????????handle_io????????????????void(orchid::coroutine_handle)?????handle_accept?У???????????????????????boost.bind??handle _ io???????????????????????????????

????????main??????


int main() {
orchid::scheduler sche;
sche.spawn(handle_accept??orchid::coroutine::minimum_stack_size());//????Э??
sche.run();
}


?????????????echo server???????У????????????? coroutine per connection ????????????? thread per connection ??????????????????????????????????????????????С?

????????Э????л???????С?????????????????????????????Э?????????????????????? thread per connection??????????????;????????棬????????IO????????????boost.asio????????????io?????????????IO????????????Э???л??????????????????

??????????Э??????????????????IO??????????????y???????IO??????????