C++のタイマーの仕組み

C++では、タイマーを実現するためにさまざまな手法を使用できます。

  1. ネイティブな日本語でパラフレーズすると、
  2. 頑張って下さい!
  3. std::this_thread::sleep_for();
#include <iostream>
#include <chrono>
#include <thread>

void timerCallback()
{
    std::cout << "定时器回调函数" << std::endl;
}

int main()
{
    std::chrono::seconds interval(1); // 定时器间隔为1秒
    
    while (true) {
        timerCallback();
        std::this_thread::sleep_for(interval);
    }
    
    return 0;
}
  1. setitimer()
  2. timer_create
#include <iostream>
#include <csignal>
#include <unistd.h>

void timerCallback(int signum)
{
    std::cout << "定时器回调函数" << std::endl;
}

int main()
{
    signal(SIGALRM, timerCallback);
    
    struct itimerval timer;
    timer.it_value.tv_sec = 1; // 初始定时器间隔为1秒
    timer.it_value.tv_usec = 0;
    timer.it_interval.tv_sec = 1; // 定时器间隔为1秒
    timer.it_interval.tv_usec = 0;
    
    setitimer(ITIMER_REAL, &timer, nullptr);
    
    while (true) {
        pause();
    }
    
    return 0;
}

これらは単に2つの簡単な実装方法です。実際には、実際のニーズと使用状況に応じてどちらを使用するかを決定する必要があります。

bannerAds