Linuxのマルチスレッドタイマーの使用方法

Linuxでマルチスレッドタイマーを使用するには、次の手順を実行します。

  1. 必要なヘッダファイルをインクルードする:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>
  1. タイマー処理関数の定義:
void timer_handler(int signum)
{
// 在此处编写定时器处理逻辑
printf("Timer expired!\n");
}
  1. タイマーやスレッドの作成:
int main()
{
struct sigaction sa;
struct itimerval timer;
// 安装定时器处理函数
sa.sa_handler = timer_handler;
sa.sa_flags = 0;
sigemptyset(&sa.sa_mask);
sigaction(SIGALRM, &sa, NULL);
// 设置定时器
timer.it_value.tv_sec = 1; // 第一次触发的秒数
timer.it_value.tv_usec = 0; // 第一次触发的微秒数
timer.it_interval.tv_sec = 1; // 之后每次触发的间隔秒数
timer.it_interval.tv_usec = 0; // 之后每次触发的间隔微秒数
setitimer(ITIMER_REAL, &timer, NULL);
// 创建线程
// 在此处编写线程逻辑
while(1) {} // 线程逻辑执行完后保持主线程运行
return 0;
}
  1. プログラムをコンパイルして実行します。

sigaction() 関数で、タイマーがタイムアウトした際に呼び出されるシグナル処理関数 timer_handler をインストールし、setitimer() 関数でタイマーのタイムアウト間隔を設定しています。

メインスレッド内で、具体的なタスクロジックを実行するother threadを作成できます。

bannerAds