c语言 多线程定时器,C语言实现的多线程定时器

1. 大致功能介绍

实现任务列表,定时器会间隔一段时间遍历列表发现要执行的任务

任务列表中的所有任务并行执行

每个任务都可以有自己的定时器,并且可以选择是否要重复执行

定义方便的任务函数实现接口

定时器可以由用户自定义何时启动和停止

提供等待功能,保证任务列表中的所有任务执行完成

提供任务列表的传参功能

2. API库介绍

void setTick(int val);

设置定时间的间隔时间tick,若设置tick为1000,且任务的定时器时间为1000,则任务会在1秒后执行,默认tick为1秒,最小tick时间为1us。

void addTimerTask(TimerTask task, int val, int autoreset, void *arg);

向任务列表注册一个任务,并指定其定时时间val,以及是否要重复执行autoreset,并可以指定参数的地址。

task需要按照头文件提供的宏来编写,例如:

TASK_START(test2, arg)

//body

Arg *temp = (Arg*)arg;

temp->ret = temp->a + temp->b;

printf("This is a test2\n");

TASK_END

TASK_START(name, arg)是任务头,name是任务名,arg是参数地址,TASK_END是任务结尾。任务体内可编写正常的c语言代码,并使用参数arg指针。

autoreset有两个可选项:AUTORESET(重复执行),NORESET(执行一次)。

若没有参数,可将arg参数设置为NULL。

void TimerWait();

用于等待任务列表中所有任务执行完毕。

void TimerStop();

用于停止定时器。

void StartTimer();

用于启动定时器。

3. 一个例子

#include

#include "timer.h"

typedef struct Argument{

你可能感兴趣的:(c语言,多线程定时器)