实现单道和多道程序执行图的实现代码
时间: 2024-10-07 15:06:28 浏览: 8
在计算机系统中,单道程序执行(Single-Threaded Execution)是指处理器一次只能处理一个任务,而多道程序执行(Multi-Tasking)则是同时运行多个任务,尽管它们看起来好像在依次执行。
对于单道程序执行,典型的C语言代码不会直接展示实现,因为这通常发生在操作系统级别,由硬件底层完成。但是,你可以创建一个简单的模拟示例:
```c
#include <stdio.h>
#define MAX_TASKS 5
void single_task(int task_id) {
for (int i = 0; i < 10; i++) {
printf("Task %d is running...\n", task_id);
sleep(1); // 模拟任务执行时间
}
printf("Task %d finished.\n", task_id);
}
int main() {
int tasks[MAX_TASKS];
for (int i = 0; i < MAX_TASKS; i++) {
tasks[i] = i;
single_task(i);
}
return 0;
}
```
这个例子中,每个任务是通过`single_task`函数串行执行的。
多道程序执行则涉及进程管理,比如在Unix/Linux下可以使用线程库如pthread,或者Windows下的CreateThread。下面是一个简单的多线程示例:
```c
#include <stdio.h>
#include <pthread.h>
void* multi_task(void* arg) {
int task_id = *(int*)arg;
for (int i = 0; i < 10; i++) {
printf("Task %d is running by thread %lu...\n", task_id, pthread_self());
usleep(1000 * 1000); // 模拟任务执行时间
}
printf("Task %d finished by thread %lu.\n", task_id, pthread_self());
return NULL;
}
int main() {
pthread_t threads[MAX_TASKS];
int tasks[MAX_TASKS] = {0, 1, 2, 3, 4};
for (int i = 0; i < MAX_TASKS; i++) {
if (pthread_create(&threads[i], NULL, multi_task, &tasks[i]) != 0) {
perror("Creating thread failed");
return -1;
}
}
for (int i = 0; i < MAX_TASKS; i++) {
if (pthread_join(threads[i], NULL) != 0) {
perror("Joining thread failed");
return -1;
}
}
return 0;
}
```
在这个示例中,每个任务作为独立的线程并发执行。