Skip to content

Instantly share code, notes, and snippets.

@jbandela
Created May 20, 2017 02:53
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jbandela/95d54560abe37775d957f65881170641 to your computer and use it in GitHub Desktop.
Save jbandela/95d54560abe37775d957f65881170641 to your computer and use it in GitHub Desktop.
//Copyright 2017 Google Inc.
//
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//https ://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
#include <cstdio>
#include <future>
#include <boost/asio/system_timer.hpp>
#include <boost/asio/use_future.hpp>
using namespace boost::asio;
using namespace std::chrono;
using std::puts;
std::future<void> sleepy(io_service &io) {
// make sure io_service does not exit until this function is done
io_service::work w{ io };
system_timer timer(io);
timer.expires_from_now(100ms);
co_await timer.async_wait(boost::asio::use_future);
puts("tick1");
timer.expires_from_now(100ms);
co_await timer.async_wait(boost::asio::use_future);
puts("tick2");
timer.expires_from_now(100ms);
co_await timer.async_wait(boost::asio::use_future);
puts("tick3");
}
int main() {
io_service io;
sleepy(io);
io.run();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment