GNU/Linux >> Belajar Linux >  >> Linux

C++ Meningkatkan ASIO pengatur waktu periodik sederhana?

Contoh yang sangat sederhana, namun berfungsi penuh:

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

boost::asio::io_service io_service;
boost::posix_time::seconds interval(1);  // 1 second
boost::asio::deadline_timer timer(io_service, interval);

void tick(const boost::system::error_code& /*e*/) {

    std::cout << "tick" << std::endl;

    // Reschedule the timer for 1 second in the future:
    timer.expires_at(timer.expires_at() + interval);
    // Posts the timer event
    timer.async_wait(tick);
}

int main(void) {

    // Schedule the timer for the first time:
    timer.async_wait(tick);
    // Enter IO loop. The timer will fire for the first time 1 second from now:
    io_service.run();
    return 0;
}

Perhatikan bahwa sangat penting untuk memanggil expires_at() untuk menyetel waktu kedaluwarsa baru, jika tidak, penghitung waktu akan langsung aktif karena waktu jatuh tempo saat ini sudah kedaluwarsa.


Contoh kedua pada tutorial Boosts Asio menjelaskannya.
Anda dapat menemukannya di sini.

Setelah itu, periksa contoh ke-3 untuk melihat bagaimana Anda dapat memanggilnya lagi dengan interval waktu berkala


Linux
  1. Pengalihan situs web sederhana melalui .htaccess

  2. Pemulihan Data Hard Drive Sederhana

  3. 13 latihan untuk meningkatkan keterampilan Linux Anda

  1. Kalkulator Baris Perintah Sederhana?

  2. Boost dan Autoconf

  3. Mendeteksi Windows atau Linux di C, C++

  1. C++ Boost:referensi tidak terdefinisi untuk boost::system::generic_category()

  2. Cara mengatur callback pengatur waktu berkala dalam modul kernel Linux

  3. Contoh sederhana konfigurasi auditd?