#C 语言标准库函数 thrd_yield
/*********************************************
* @brief 让出当前线程
********************************************/
void thrd_yield(void);
说明
让出当前线程,提示调度系统重新调度线程,以允许其它线程运行。
当前线程仍是可以运行的状态,重新调度时仍可能运行当前线程。
参数
无
返回值
无
#示例
#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)