用C语言编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
时间: 2024-10-18 18:08:11 浏览: 67
在C语言中,我们可以使用`pthread`库来创建并管理线程。下面是一个简单的示例,展示了如何满足您的需求:
```c
#include <stdio.h>
#include <pthread.h>
#define THREAD_NAME_A "Thread A"
#define THREAD_NAME_B "Thread B"
#define THREAD_NAME_C "Thread C"
void* print_thread_id(void* arg) {
char thread_name[] = (char*)arg;
int count = 0;
while (count < 10) {
printf("%s", thread_name);
if (count < 9)
printf("ABC"[count % 3]); // 用字符串"ABC"循环输出对应字符
count++;
printf("\n"); // 每次打印完换行
sleep(1); // 稍微延时防止瞬间打印太快难以分辨
}
return NULL;
}
int main() {
pthread_t threads[3]; // 创建三个线程的数组
pthread_attr_t attr; // 线程属性
// 初始化线程属性
pthread_attr_init(&attr);
// 设置每个线程的函数和名字
pthread_create(&threads[0], &attr, print_thread_id, THREAD_NAME_A);
pthread_create(&threads[1], &attr, print_thread_id, THREAD_NAME_B);
pthread_create(&threads[2], &attr, print_thread_id, THREAD_NAME_C);
// 启动所有线程
for (int i = 0; i < 3; i++) {
pthread_join(threads[i], NULL); // 等待所有线程结束
}
pthread_attr_destroy(&attr); // 销毁线程属性
return 0;
}
```
在这个程序中,我们首先定义了三个线程的名称常量,然后在`print_thread_id`函数中,线程会打印其名字,并按照ABC的顺序循环输出特定字符。`main`函数则负责创建线程、启动它们并等待它们完成。
注意:为了清晰可见,实际应用中可能需要适当调整`sleep(1)`的时间间隔,以便线程之间的输出不会相互覆盖。
阅读全文