c语言,编写代码实现编写一个程序,开启三个线程,这三个线程的id分别是A,B,C,每个线程将自己的id在屏幕上打印10遍,要求输出必须按照ABC的顺序显示
时间: 2024-10-18 18:08:07 浏览: 31
在C语言中,我们可以使用POSIX线程库(pthread)来创建和管理线程。下面是一个简单的示例代码,实现了你所描述的需求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define THREAD_NAME_LEN 5
void* thread_func(void* arg) {
char name[THREAD_NAME_LEN + 1] = (char*)arg;
int count = 0;
while (count < 10) {
printf("%s: %d\n", name, pthread_self());
count++;
sleep(1); // 暂停1秒以控制输出顺序
}
return NULL;
}
int main() {
pthread_t threads[NUM_THREADS] = {0};
const char* thread_names[] = {"A", "B", "C"};
for (int i = 0; i < NUM_THREADS; i++) {
if (pthread_create(&threads[i], NULL, thread_func, (void*)thread_names[i]) != 0) {
perror("Error creating thread");
exit(EXIT_FAILURE);
}
}
// 等待所有线程完成
for (int i = 0; i < NUM_THREADS; i++) {
pthread_join(threads[i], NULL);
}
printf("\nAll threads finished.\n");
return 0;
}
```
在这个程序中,我们首先定义了一个函数`thread_func`作为每个线程的工作。它接收线程名称作为参数,并打印线程ID(使用`pthread_self()`获取)并递增计数器10次。`sleep(1)`用于暂停线程一秒,以便按预期顺序显示。
在`main`函数中,我们创建了三个线程并将它们的名称分别传递给`thread_func`。然后我们等待所有线程执行完毕。
注意:这个示例假设你的系统支持POSIX线程API,并且没有实际限制线程的执行顺序,因为线程调度是由操作系统决定的。如果需要更精确地控制线程执行顺序,可能需要引入其他同步机制如互斥量或条件变量。
阅读全文