用C语言编写创建2个线程的程序。父进程显示5次“Thisistheparent, pidisxxxxxx”,每个线程显示5次“Thisisanewthread,threadID isxxxxxx”。要求交叉显示父进程和子进程的显示内容。
时间: 2024-11-11 16:23:42 浏览: 17
在C语言中,我们可以使用`pthread`库来创建和管理线程。下面是一个简单的示例,展示了如何创建两个线程并交替显示消息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define MAX_THREADS 2
#define MAX_MESSAGES 5
// 线程函数
void *thread_function(void *arg) {
int thread_id = *(int*) arg;
char message[] = "Thisisanewthread, threadID is %d\n";
for (int i = 0; i < MAX_MESSAGES; i++) {
printf(message, thread_id);
// 在这里可以添加睡眠以模拟交错显示,防止打印过快
sleep(1);
}
pthread_exit(NULL); // 线程结束,返回主线程
}
int main() {
pthread_t threads[MAX_THREADS];
int thread_ids[] = {0, 1}; // 子线程id
int messages_per_thread = MAX_MESSAGES / MAX_THREADS;
// 创建线程
for (int i = 0; i < MAX_THREADS; i++) {
pthread_create(&threads[i], NULL, thread_function, &thread_ids[i]);
}
// 显示父进程的消息
for (int i = 0; i < MAX_MESSAGES; i++) {
printf("Thisistheparent, pid is %d\n", getpid());
// 在这里也可以添加睡眠以控制输出速度
sleep(1);
}
// 等待所有线程结束
for (int i = 0; i < MAX_THREADS; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}
```
在这个程序中,`main`函数创建了两个线程,每个线程都有自己的线程ID,并设置它们交替显示指定次数的消息。`thread_function`是每个线程要执行的任务,它会打印出自己的信息然后再退出。在实际运行过程中,为了达到交错显示的效果,可以在打印消息后添加一个短暂的休眠时间(`sleep`)。
阅读全文