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 | 19 | using namespace std; // For time_t, time and ctime; |
20 | 20 | time_t now = time(0); |
21 | 21 | |
22 | - sleep(10); | |
22 | + sleep(5); | |
23 | 23 | |
24 | 24 | char buf[26]; |
25 | 25 | return ctime_r(&now, buf); |
... | ... | @@ -89,26 +89,24 @@ private: |
89 | 89 | tcp::acceptor acceptor_; |
90 | 90 | }; |
91 | 91 | |
92 | -void WorkerThread(std::shared_ptr<asio::io_context> io_svc) { io_svc->run(); } | |
93 | - | |
94 | 92 | int main() { |
95 | 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 | 98 | std::vector<std::thread> threads; |
101 | 99 | |
102 | 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 | 105 | std::cout << "Press ENTER key to exit!" << std::endl; |
108 | 106 | |
109 | 107 | std::cin.get(); |
110 | 108 | |
111 | - io_context->stop(); | |
109 | + io_context.stop(); | |
112 | 110 | |
113 | 111 | for (auto &i : threads) |
114 | 112 | i.join(); | ... | ... |