C语言并行执行两个延时任务
时间: 2024-11-06 10:00:33 浏览: 9
单片机C语言源码学习参考-液晶12864并行.zip
在C语言中,并非原生支持并行执行,因为标准库提供的线程API(如POSIX线程库`pthread`)主要用于创建和管理单线程或多线程程序,而并非真正的并行计算。然而,你可以利用`pthread`库来创建和调度两个独立的线程,让它们各自执行延时任务。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
// 模拟延时任务的函数
void* delay_thread(void* arg) {
int seconds = *((int*)arg); // 解压参数
printf("Thread started, delaying for %d seconds.\n", seconds);
sleep(seconds * 1000); // 延迟指定时间
printf("Thread finished.\n");
pthread_exit(NULL); // 线程结束
}
int main() {
// 创建两个延时任务,每个5秒
pthread_t thread1, thread2;
int seconds = 5;
if (pthread_create(&thread1, NULL, delay_thread, &seconds)) {
perror("Error creating thread 1");
exit(1);
}
if (pthread_create(&thread2, NULL, delay_thread, &seconds)) {
perror("Error creating thread 2");
exit(1);
}
// 主线程等待子线程完成
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
printf("Both threads have completed.\n");
return 0;
}
```
这个例子中,主线程创建了两个新线程,每个线程负责一个延时任务。注意,实际运行时,这两个任务会在操作系统调度下并行执行(如果CPU核心足够),但它们仍然共享同一个全局上下文。
阅读全文