用C语言编写一个程序,以线程的方式设计3个定时器,一个定时器每隔1s打印“1”,一个定时器每隔2s打印“2”,一个定时器每隔3s打印“3”
时间: 2024-11-15 13:31:38 浏览: 4
时钟设计C语言程序
在C语言中,我们可以使用POSIX线程库(pthread)来实现这个功能。下面是一个简单的示例,展示了如何创建三个独立的线程,每个线程都有各自的延时期限和打印任务:
```c
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
// 定义打印函数,作为线程的入口点
void* print_number(void* arg) {
char number = *((char*)arg);
while (1) {
printf("%d\n", number);
sleep(number); // 睡眠指定秒数
}
return NULL;
}
int main() {
pthread_t timer1, timer2, timer3; // 创建线程的句柄
// 将定时器间隔和对应的数字传递给线程函数
int interval[] = {1, 2, 3};
char numbers[] = {'1', '2', '3'};
for (int i = 0; i < 3; i++) {
if (pthread_create(&timeri, NULL, print_number, &numbers[i]) != 0) {
perror("Error creating thread");
return -1;
}
sleep(1); // 主线程暂停一下,让新线程有时间启动
}
// 等待所有线程完成
for (int i = 0; i < 3; i++) {
if (pthread_join(timeri, NULL) != 0) {
perror("Error joining thread");
return -1;
}
}
printf("All timers finished.\n");
return 0;
}
```
在这个程序中,`print_number`函数会被每个线程独立执行,它会无限循环地打印数字并睡眠对应的时间。主线程创建并启动了这三个定时器,并在等待它们完成后终止。
阅读全文