You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何在同一程序中同时运行两个无限循环?

问题核心原因

普通C程序默认是单线程顺序执行,代码中的第一个无限循环会永久占用执行流,永远无法进入第二个循环执行。

可选实现方案

方案1:单线程逻辑合并(最简易,无额外依赖)

把两个功能的执行逻辑放到同一个无限循环中,根据需求控制执行频率即可,适合两个任务执行频率接近、无长时间阻塞操作的场景:

#include <stdio.h>
#include <time.h>
#include <unistd.h> // 用于sleep函数

int main()
{
    char cur_time[128];
    int timer_count = 0; // 计时器计数示例
    for(;;)
    {
        // 逻辑1:打印当前时间
        time_t t = time(NULL);
        struct tm* ptm = localtime(&t);
        strftime(cur_time, 128, "%d-%b-%Y  %H:%M:%S", ptm);
        printf("\rCurrent date and time: %s | 计时器计数:%d", cur_time, timer_count);
        fflush(stdout); // 强制刷新缓冲区,避免打印不及时

        // 逻辑2:计时器计数
        timer_count++;

        sleep(1); // 控制每秒刷新一次,避免CPU占用率100%
    }
    return 0;
}

方案2:多线程实现(适合任务频率不同、有独立阻塞逻辑的场景)

使用POSIX线程库pthread为每个无限循环创建独立的线程,两个线程会被操作系统调度并行执行:

编译时需要添加-lpthread参数链接线程库,例如:gcc test.c -o test -lpthread

#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <pthread.h>

// 线程1:实时打印时间
void* print_time(void* arg)
{
    char cur_time[128];
    for(;;)
    {
        time_t t = time(NULL);
        struct tm* ptm = localtime(&t);
        strftime(cur_time, 128, "%d-%b-%Y  %H:%M:%S", ptm);
        printf("\rCurrent date and time: %s", cur_time);
        fflush(stdout);
        sleep(1);
    }
    return NULL;
}

// 线程2:计时器逻辑
void* run_timer(void* arg)
{
    int count = 0;
    for(;;)
    {
        // 此处可替换为你自己的计时器逻辑
        // 示例:每2秒计数+1,打印输出
        count++;
        printf(" 计时器计数:%d\n", count);
        sleep(2);
    }
    return NULL;
}

int main()
{
    pthread_t time_thread, timer_thread;
    // 创建两个线程
    pthread_create(&time_thread, NULL, print_time, NULL);
    pthread_create(&timer_thread, NULL, run_timer, NULL);
    // 等待线程执行结束(此处两个线程都是死循环,会一直阻塞)
    pthread_join(time_thread, NULL);
    pthread_join(timer_thread, NULL);
    return 0;
}
注意事项
  • 单线程方案中不要在循环内添加长时间的阻塞操作,否则会拖慢另一个逻辑的执行效率
  • 多线程方案中如果两个线程需要操作同一个共享变量,需要添加互斥锁避免竞态问题
  • 两个方案中都建议添加sleep或类休眠逻辑,避免无意义占用100%CPU资源

内容的提问来源于stack exchange,提问作者MrWhoseTheNoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:39:01