国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > thrd_yield 以获得更好的体验。

# C 语言标准库函数 thrd_yield

在头文件 threads.h 中定义。
/*********************************************
 * @brief 让出当前线程
 ********************************************/
void thrd_yield(void);

!subtitle:说明

让出当前线程,提示调度系统重新调度线程,以允许其它线程运行。

当前线程仍是可以运行的状态,重新调度时仍可能运行当前线程。

!subtitle:参数

!subtitle:返回值

# 示例

#include <stdio.h>
#include <threads.h>
#include <time.h>

// 通过让出实现睡眠
void yield_sleep(int seconds)
{
    // 获取当前时间戳(秒)
    // 亚秒级时间被丢弃,因此休眠时间并不准确
    time_t start = time(NULL);

    do
    {
        thrd_yield();
    }
    while(time(NULL) - start < seconds);
}

int main(void)
{
    printf("开始时间: %s", ctime(&(time_t){time(NULL)}));

    // 睡眠
    yield_sleep(3);

    printf("结束时间: %s", ctime(&(time_t){time(NULL)}));
    
    return 0;
}

运行结果:

开始时间: Fri Aug 22 14:51:18 2025
结束时间: Fri Aug 22 14:51:21 2025

# 推荐阅读

# 参考标准

  • C17 standard (ISO/IEC 9899:2018):

    • 7.26.5.8 The thrd_yield function (p: 281)

  • C11 standard (ISO/IEC 9899:2011):

    • 7.26.5.8 The thrd_yield function (p: 385)

本文 更新于: 2025-11-27 09:38:11 创建于: 2025-11-27 09:38:11