用C语言编写创建2个线程的程序。父进程显示5次“This is the parent,pid is xxxxxx”,每个线程显示5次“This is a new thread, threadID is xxxxxx”。要求交叉显示父进程和子进程的显示内容
时间: 2024-11-13 09:23:41 浏览: 18
在C语言中,我们可以使用`pthread.h`库来创建和管理线程。以下是一个简单的示例程序,它展示了如何创建两个线程并交替展示信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define MAX_THREADS 2
void* print_info(void* arg) {
int tid = *(int*)arg;
char message[64] = "This is a new thread, threadID is %d\n";
for (int i = 0; i < 5; ++i) {
sprintf(message, message, tid);
printf(message);
pthread_yield(); // 为了让主线程输出
}
return NULL;
}
int main() {
pthread_t threads[MAX_THREADS];
int thread_id = 0;
// 创建并启动子线程
for (int i = 0; i < MAX_THREADS; ++i) {
pthread_create(&threads[i], NULL, print_info, &thread_id++);
thread_id++; // 用于下一次循环
}
// 父进程显示信息
for (int i = 0; i < 5; ++i) {
printf("This is the parent, pid is %d\n", getpid());
sleep(1); // 等待一下让子线程输出
}
// 等待所有子线程结束
for (int i = 0; i < MAX_THREADS; ++i) {
pthread_join(threads[i], NULL);
}
printf("Parent exiting...\n");
return 0;
}
```
在这个程序中,`print_info`函数被传递给每个线程,并通过参数`tid`显示特定的线程ID。`main`函数创建并启动了两个线程,然后每隔一轮,先由父进程显示信息,再等待子线程运行完毕。
注意,这里使用了`pthread_yield()`函数来模拟线程间的交替执行,实际环境中可能会有更复杂的方式来同步线程。
阅读全文