diff options
Diffstat (limited to '3rdparty/asio/src/examples/cpp14/executors/bank_account_2.cpp')
-rw-r--r-- | 3rdparty/asio/src/examples/cpp14/executors/bank_account_2.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/3rdparty/asio/src/examples/cpp14/executors/bank_account_2.cpp b/3rdparty/asio/src/examples/cpp14/executors/bank_account_2.cpp index 5233e77dec3..c2de05156e8 100644 --- a/3rdparty/asio/src/examples/cpp14/executors/bank_account_2.cpp +++ b/3rdparty/asio/src/examples/cpp14/executors/bank_account_2.cpp @@ -1,10 +1,9 @@ -#include <asio/ts/executor.hpp> -#include <asio/thread_pool.hpp> +#include <asio/execution.hpp> +#include <asio/static_thread_pool.hpp> #include <iostream> -using asio::post; -using asio::thread_pool; -using asio::use_future; +using asio::static_thread_pool; +namespace execution = asio::execution; // Traditional active object pattern. // Member functions block until operation is finished. @@ -12,35 +11,38 @@ using asio::use_future; class bank_account { int balance_ = 0; - mutable thread_pool pool_{1}; + mutable static_thread_pool pool_{1}; public: void deposit(int amount) { - post(pool_, - use_future([=] + asio::require(pool_.executor(), execution::blocking.always).execute( + [this, amount] { balance_ += amount; - })).get(); + }); } void withdraw(int amount) { - post(pool_, - use_future([=] + asio::require(pool_.executor(), + execution::blocking.always).execute( + [this, amount] { if (balance_ >= amount) balance_ -= amount; - })).get(); + }); } int balance() const { - return post(pool_, - use_future([=] + int result = 0; + asio::require(pool_.executor(), execution::blocking.always).execute( + [this, &result] { - return balance_; - })).get(); + result = balance_; + }); + return result; } }; |