Commit 4b29a8c964cc73c23ecd9261d5c80d2b465641af
1 parent
41ce4ed5
Updated mutithreaded example
Showing
1 changed file
with
6 additions
and
8 deletions
13-daytime8.cpp
@@ -19,7 +19,7 @@ std::string make_daytime_string() { | @@ -19,7 +19,7 @@ std::string make_daytime_string() { | ||
19 | using namespace std; // For time_t, time and ctime; | 19 | using namespace std; // For time_t, time and ctime; |
20 | time_t now = time(0); | 20 | time_t now = time(0); |
21 | 21 | ||
22 | - sleep(10); | 22 | + sleep(5); |
23 | 23 | ||
24 | char buf[26]; | 24 | char buf[26]; |
25 | return ctime_r(&now, buf); | 25 | return ctime_r(&now, buf); |
@@ -89,26 +89,24 @@ private: | @@ -89,26 +89,24 @@ private: | ||
89 | tcp::acceptor acceptor_; | 89 | tcp::acceptor acceptor_; |
90 | }; | 90 | }; |
91 | 91 | ||
92 | -void WorkerThread(std::shared_ptr<asio::io_context> io_svc) { io_svc->run(); } | ||
93 | - | ||
94 | int main() { | 92 | int main() { |
95 | try { | 93 | try { |
96 | - auto io_context = std::make_shared<asio::io_context>(); | 94 | + asio::io_context io_context; |
97 | 95 | ||
98 | - asio::executor_work_guard work_guard(io_context->get_executor()); //prevent run() from exiting immediately after all work is done | 96 | + asio::executor_work_guard work_guard(io_context.get_executor()); //prevent run() from exiting immediately after all work is done |
99 | 97 | ||
100 | std::vector<std::thread> threads; | 98 | std::vector<std::thread> threads; |
101 | 99 | ||
102 | for (int i = 0; i < 5; i++) | 100 | for (int i = 0; i < 5; i++) |
103 | - threads.emplace_back(WorkerThread, io_context); | 101 | + threads.emplace_back([&io_context]{io_context.run();}); |
104 | 102 | ||
105 | - tcp_server server(*io_context); | 103 | + tcp_server server(io_context); |
106 | 104 | ||
107 | std::cout << "Press ENTER key to exit!" << std::endl; | 105 | std::cout << "Press ENTER key to exit!" << std::endl; |
108 | 106 | ||
109 | std::cin.get(); | 107 | std::cin.get(); |
110 | 108 | ||
111 | - io_context->stop(); | 109 | + io_context.stop(); |
112 | 110 | ||
113 | for (auto &i : threads) | 111 | for (auto &i : threads) |
114 | i.join(); | 112 | i.join(); |