编写一个程序,至少创建2个线程,两个线程都循环执行,一个线程每隔1秒输出我是线程1,另一个线程每隔1秒输出我是线程2
时间: 2024-09-26 15:02:39 浏览: 32
在C语言中,我们可以使用POSIX线程库来创建这样的程序。以下是一个简单的示例,它包含两个线程,每个线程都会每秒钟打印出自己的标识符。
```c
#include <pthread.h>
#include <stdio.h>
#include <time.h>
#define THREAD_NAME_1 "Thread 1"
#define THREAD_NAME_2 "Thread 2"
void *thread_1(void *arg) {
while (1) {
time_t now = time(0);
printf("%s: %ld\n", THREAD_NAME_1, now);
sleep(1); // 每秒休眠1秒
}
return NULL;
}
void *thread_2(void *arg) {
while (1) {
time_t now = time(0);
printf("%s: %ld\n", THREAD_NAME_2, now);
sleep(1);
}
return NULL;
}
int main() {
pthread_t thread1, thread2;
// 创建并启动线程1
if (pthread_create(&thread1, NULL, thread_1, NULL)) {
perror("Error creating thread 1");
exit(EXIT_FAILURE);
}
// 创建并启动线程2
if (pthread_create(&thread2, NULL, thread_2, NULL)) {
perror("Error creating thread 2");
exit(EXIT_FAILURE);
}
// 等待所有线程完成
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
printf("All threads completed.\n");
return 0;
}
```
这个程序中,`thread_1` 和 `thread_2` 函数分别代表两个线程,它们进入无限循环,在每次循环开始时打印当前时间表示线程正在运行,并使用`sleep(1)`暂停一秒钟。
阅读全文