在Linux中用简单的C语言编写创建2个线程的程序。父进程显示5次“This is the parent,pid is xxxxxx”,每个线程显示5次“This is a new thread, threadID is xxxxxx”。要求交叉显示父进程和子进程的显示内容
时间: 2024-11-13 20:24:10 浏览: 11
udp.rar_linux c语言 udp_udp 多线程_udp c语言 linux_udp linux
在Linux环境下,你可以使用`pthread.h`库来创建线程,并通过标准输入输出来达到你的需求。以下是一个简单的C语言程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define MAX_THREADS 2
#define MESSAGE "This is the parent, pid is %d"
#define THREAD_MESSAGE "This is a new thread, thread ID is %d"
void *thread_function(void *arg) {
int thread_id = (int)arg;
for (int i = 0; i < 5; ++i) {
printf(THREAD_MESSAGE "\n", thread_id);
pthread_yield(); // 为了让主线程显示,让出CPU时间片
}
return NULL;
}
int main() {
pthread_t threads[MAX_THREADS];
int i;
// 创建线程
for (i = 0; i < MAX_THREADS; ++i) {
int thread_pid = getpid();
printf(MESSAGE, thread_pid);
if (pthread_create(&threads[i], NULL, thread_function, (void*)i)) {
perror("Failed to create thread");
exit(EXIT_FAILURE);
}
}
// 等待所有线程结束
for (i = 0; i < MAX_THREADS; ++i) {
if (pthread_join(threads[i], NULL)) {
perror("Thread join failed");
exit(EXIT_FAILURE);
}
}
printf("\nAll threads finished.\n");
return 0;
}
```
在这个程序中,`main()`函数创建了两个线程并分别启动它们。每个线程在其循环内打印指定的消息五次,然后主动让出控制权给主线程(`pthread_yield()`),这样可以交替看到父进程和子线程的输出。最后,主线程等待所有子线程完成。
运行这个程序时,你会看到父进程和子线程的消息交替显示。
阅读全文