c语言怎么弄一个线程让倒计时函数和游戏函数同时执行
时间: 2023-06-26 19:05:39 浏览: 189
在 C 语言中,可以使用 POSIX 线程库来创建线程。下面是一个简单的示例,可以让倒计时函数和游戏函数同时执行:
```c
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
// 全局变量,用于控制线程的运行
int running = 1;
// 倒计时函数
void *countdown(void *arg) {
int seconds = *(int *)arg;
while (seconds > 0 && running) {
printf("倒计时:%d 秒\n", seconds);
sleep(1);
seconds--;
}
running = 0;
return NULL;
}
// 游戏函数
void *game(void *arg) {
while (running) {
printf("游戏进行中...\n");
sleep(1);
}
printf("游戏结束!\n");
return NULL;
}
int main() {
pthread_t t1, t2;
int seconds = 10;
// 创建倒计时线程
pthread_create(&t1, NULL, countdown, &seconds);
// 创建游戏线程
pthread_create(&t2, NULL, game, NULL);
// 等待线程结束
pthread_join(t1, NULL);
pthread_join(t2, NULL);
return 0;
}
```
在上面的示例中,我们创建了两个线程,一个用于倒计时,另一个用于游戏。倒计时线程需要一个参数,即倒计时的秒数,我们通过向 `pthread_create` 函数传递一个指向 `seconds` 变量的指针来实现。游戏线程不需要参数,因此我们传递了一个空指针。
在 `countdown` 函数中,我们使用一个循环来实现倒计时,并在每次循环中打印剩余时间。在 `game` 函数中,我们使用一个循环来模拟游戏的运行,并在每次循环中打印游戏进行中的消息。这两个函数都使用了 `sleep` 函数来暂停一秒钟,以便我们能够看到它们的输出。
在 `main` 函数中,我们创建了两个线程,并等待它们结束。当倒计时结束或游戏结束时,我们将 `running` 变量设置为 0,以便让另一个线程也退出循环并结束。
需要注意的是,在多线程编程中,要特别注意数据的同步和线程之间的通信问题。我们需要使用互斥锁和条件变量等机制来保证线程之间的正确协作。
阅读全文