Linux用C语言编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
时间: 2024-10-18 18:06:34 浏览: 45
在Linux环境下,你可以使用C语言中的`pthread`库来创建和管理线程。以下是一个简单的示例,展示了如何创建三个线程并按照指定顺序输出它们的ID:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
// 定义线程函数
void* print_thread(void* arg) {
char id = (char*)arg;
for (int i = 0; i < 10; i++) {
printf("%c", id);
// 线程操作结束后记得刷新屏幕,但是C标准库不支持这一操作
// printf("\n"); // 这里只是为了演示效果,在实际应用中需要其他方式
}
return NULL;
}
int main() {
pthread_t threads[3]; // 创建三个线程的数组
int thread_ids[] = { 'A', 'B', 'C' }; // 线程ID
// 创建并启动线程
for (size_t i = 0; i < 3; i++) {
pthread_create(&threads[i], NULL, print_thread, &thread_ids[i]);
// 启动线程后睡眠1秒,以便控制输出顺序
sleep(1); // 这里只是为了演示顺序,实际上不需要
}
// 等待所有线程结束
for (size_t i = 0; i < 3; i++) {
pthread_join(threads[i], NULL);
}
printf("All threads finished.\n");
return 0;
}
```
注意:在实际生产环境中,由于C标准库并不直接提供刷新屏幕的功能,这里只是为了演示而加入了一个`printf("\n")`,在真实情况下你需要用其他方式来同步输出(例如信号量、条件变量等)。同时,`sleep(1)`的作用也是为了让线程按照ABC的顺序启动,但在实际项目中不应依赖这个延迟。
阅读全文