Commit 37a77a62a010f5f013f24f46f5ffe06f7eee1a9a
1 parent
a9827c4e
Updated second multithreaded version
Showing
1 changed file
with
7 additions
and
1 deletions
14-daytime9.cpp
@@ -45,7 +45,7 @@ public: | @@ -45,7 +45,7 @@ public: | ||
45 | std::cout << "~tcp_connection()" << std::endl; | 45 | std::cout << "~tcp_connection()" << std::endl; |
46 | } | 46 | } |
47 | private: | 47 | private: |
48 | - tcp_connection(asio::io_context &io_context) : socket_(io_context) {} | 48 | + tcp_connection(asio::io_context &io_context) : socket_(io_context), io_context_(io_context) {} |
49 | 49 | ||
50 | void handle_write(const asio::error_code &error, size_t bytes_transferred) { | 50 | void handle_write(const asio::error_code &error, size_t bytes_transferred) { |
51 | std::cout << error.category().name() << " : " << error.value() << " : " | 51 | std::cout << error.category().name() << " : " << error.value() << " : " |
@@ -59,6 +59,11 @@ private: | @@ -59,6 +59,11 @@ private: | ||
59 | void long_operation() | 59 | void long_operation() |
60 | { | 60 | { |
61 | message_ = make_daytime_string(); | 61 | message_ = make_daytime_string(); |
62 | + io_context_.post(std::bind(&tcp_connection::work_done, shared_from_this())); | ||
63 | + } | ||
64 | + | ||
65 | + void work_done() | ||
66 | + { | ||
62 | asio::async_write(socket_, asio::buffer(message_), | 67 | asio::async_write(socket_, asio::buffer(message_), |
63 | std::bind(&tcp_connection::handle_write, shared_from_this(), | 68 | std::bind(&tcp_connection::handle_write, shared_from_this(), |
64 | std::placeholders::_1, std::placeholders::_2)); | 69 | std::placeholders::_1, std::placeholders::_2)); |
@@ -66,6 +71,7 @@ private: | @@ -66,6 +71,7 @@ private: | ||
66 | 71 | ||
67 | tcp::socket socket_; | 72 | tcp::socket socket_; |
68 | std::string message_; | 73 | std::string message_; |
74 | + asio::io_context &io_context_; | ||
69 | }; | 75 | }; |
70 | 76 | ||
71 | class tcp_server { | 77 | class tcp_server { |