File: kdk_timer_start.3

package info (click to toggle)
libkysdk-base 3.0.1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,736 kB
  • sloc: cpp: 22,853; ansic: 8,693; python: 1,858; sh: 121; xml: 19; makefile: 6
file content (123 lines) | stat: -rw-r--r-- 3,234 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
.TH "KDK_TIMER_START" 3 "Fri Sep 22 2023" "My Project" \" -*- nroff -*-
.ad l
.nh
.SH NAME
kdk_timer_start \- 启动一个定时器  

.SH SYNOPSIS
.br
.PP
\fC#include <libkytimer\&.h>\fP
.br

.SS "Functions"
.SS "size_t kdk_timer_start (unsigned int intervalms, time_handler callback, KTimerAttribute attr, KTimerType type, void * userdata, int freeOnDelete)"

.PP
启动一个定时器 
.PP
\fBParameters\fP
.RS 4
\fIintervalms\fP 定时器时间,以毫秒为单位 
.br
\fIcallback\fP 定时器到期后触发的回调函数指针 
.br
\fIattr\fP 定时器属性,KTIMER_SINGLESHOT表示一次性定时器;KTIMER_PERIODIC表示周期性定时器;KTIMER_NEVER表示不会被触发的定时器 
.br
\fItype\fP 定时器类型,KTIMER_ABSOLUTE表示绝对时间定时器,修改系统时间不会影响定时器的时间;KTIMER_RELATIVE表示相对时间定时器,修改系统时间会影响定时器时间 
.br
\fIuserdata\fP 指向用户数据的指针 
.br
\fIfreeOnDelete\fP [未启用] 
.RE
.PP
\fBReturns\fP
.RS 4
size_t 定时器的ID 
.RE
.PP
Link with \fI\-lkytimer\fP.
.SH "Detailed Description"
.PP 
接口的主要功能是启动一个定时器
.SH EXAMPLES
.EX
#include <libkytimer.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <unistd.h>
#include <time.h>
#include <string.h>

void func(char* comment)
{
	char date[32]	= {0};
	time_t now;
	time(&now);
	if (ctime_r(&now , date))
		date[strlen(date) - 1]	= '\0';
	printf("[%s]这是%s\n" , date , comment);
}

void stop(size_t* fdpoll)
{
	printf("开始停止定时器\n");
	for (int i = 0 ; i < 10 ; i ++)
	{
		kdk_timer_stop(fdpoll[i]);
	}
}

int main()
{
	assert(kdk_timer_init() == 0);

	//测试1 -- 基本功能
	size_t fdpoll[10]	= {0};
	// for (int i = 1 ; i <= 10 ; i ++)
	// {
	// 	char* data	= (char*)malloc(10);
	// 	assert(data);
	// 	sprintf(data , "%d号" , i);
	// 	fdpoll[i - 1]	= kdk_timer_start(i * 1000 , (time_handler)func , KTIMER_PERIODIC , KTIMER_ABSOLUTE, (void*)data , 1);
	// 	assert(fdpoll[i - 1]);
	// }
	kdk_timer_start(10000 , (time_handler)stop , KTIMER_SINGLESHOT , KTIMER_ABSOLUTE, (void*)fdpoll , 0);
	sleep(11);

	//测试3 -- 单次触发
	printf("单次触发测试:\n");
	kdk_timer_start(2000 , (time_handler)func , KTIMER_SINGLESHOT , KTIMER_ABSOLUTE, "2号" , 0);
	sleep(5);

	//测试2 -- 重置定时器时间
	printf("修改时间测试:\n");
	int persec	= kdk_timer_start(1000 , (time_handler)func , KTIMER_PERIODIC , KTIMER_ABSOLUTE, "1号" , 0);
	int sec3	= kdk_timer_start(3000 , (time_handler)func , KTIMER_SINGLESHOT , KTIMER_ABSOLUTE, "3号" , 0);
	sleep(2);
	kdk_timer_reset(sec3 , 4000);
	printf("sec3 时钟已被重置为4000ms\n");
	sleep(10);

	printf("正在销毁定时器核心...\n");
	kdk_timer_destroy();
	return 0;
}
.SH "CONFORMING TO"
These functions are as per the withdrawn POSIX.1e draft specification.
The following functions are Linux extensions:
.BR kdk_timer_init (),
.BR kdk_timer_stop (),
.BR kdk_timer_reset ()
and
.BR kdk_timer_destroy ().
.SH "SEE ALSO"
.BR kdk_timer_init (3),
.BR kdk_timer_stop (3),
.BR kdk_timer_reset (3)
and
.BR kdk_timer_destroy (3).
.SH "Author"
.PP 
Generated automatically by Doxygen for libkytimer.h from the source code\&.