14. Boost-Asio-Tutorial---Timer

Lassen wir das Multithread-Ausführungsmodell für einen Moment hinter uns und lernen etwas ganz Einfaches. Ein Werkzeug, das Sie in fast jeder Anwendung benötigen, die E/A verarbeitet, ist ein Timer. Lassen Sie uns also lernen, wie man sie in Boost.Asio verwendet.

Es stehen vier Timer zur Verfügung:

boost::asio::deadline_timer
boost::asio::high_resolution_timer
boost::asio::steady_timer
boost::asio::system_timer

Sie bieten jedoch alle die gleiche Funktionalität. Der Unterschied zwischen ihnen besteht darin, dass Deadline_timer auf boost::posix_time basiert, während andere Timer auf std::chrono Timer basieren. Daher besteht keine wirkliche Notwendigkeit, sie im Detail zu besprechen, da sie die gleiche Schnittstelle und Art des Verhaltens bieten. Schauen wir uns ein Anwendungsbeispiel von high_resolution_timer an.

#include <boost/asio.hpp>
#include <iostream>

namespace io = boost::asio;
using error_code = boost::system::error_code;

io::io_context io_context;

// 从io_context引用构造计时器
io::high_resolution_timer timer(io_context);

auto now()
{
    return std::chrono::high_resolution_clock::now();
}

auto begin = now();

void async_wait()
{
    // 设置到期持续时间
    timer.expires_after(std::chrono::seconds(1));

    // 异步等待到期
    timer.async_wait([&] (error_code error)
    {
      

おすすめ

転載: blog.csdn.net/Knowledgebase/article/details/132984732