关于sched_yield()主动出让CPU的占有权
有时候程序在一个死循环中执行,不断尝试获取某个资源,如果没有获得就会不断尝试。为了防止程序空跑,可以调用sched_yield函数来主动出让CPU的占有权,减少CPU的空跑。比如自旋锁的实现可以调用sched_yield来减少CPU的空跑。
man一下,查看一下手册:
NAME
sched_yield - yield the processor
SYNOPSIS
#include <sched.h>
int sched_yield(void);
DESCRIPTION
A process can relinquish the processor voluntarily without blocking by calling sched_yield(). The process will then be moved
to the end of the queue for its static priority and a new process gets to run.
Note: If the current process is the only process in the highest priority list at that time, this process will continue to run
after a call to sched_yield().
POSIX systems on which sched_yield() is available define _POSIX_PRIORITY_SCHEDULING in <unistd.h>.
RETURN VALUE
On success, sched_yield() returns 0. On error, -1 is returned, and errno is set appropriately.
文档的大致意思是,通过调用sched_yield函数可以使当前线程以非阻塞方式主动放弃处理器时间片的使用,并根据其优先级别将其放到对应调度队列的
队尾,从而使另一个级别等于或高于当前线程的线程先运行。如果没有高于或者等于当前线程优先级别的线程,那么这个函数会立即返回继续执行当前
线程。
对于放弃CPU的主动权可以用sleep,调用sleep也会让出CPU的占有权,不过不同之处在于,sleep会等待一段时间后再等待CPU的调度。
关于sched_yield()主动出让CPU的占有权相关推荐
- 如何写出让 CPU 跑得更快的代码?
作者 | 小林coding 来源 | 小林coding(ID:CodingLin) 前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更 ...
- 面试官:如何写出让 CPU 跑得更快的代码?
前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能. CPU 内部嵌入了 CPU ...
- 如何写出让 CPU 跑得更快的代码
前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能. CPU 内部嵌入了 CPU ...
- C语言线程Yield,C++11多线程-主动让出CPU使用权(yield)
在多线程的编程中,有时候一个线程需要等待IO操作或者等待其它某个条件满足,再继续执行.为了达到这样的目的,有时我们会写出如下的代码: while(!isDone()); // Bad 这样代码的问题在 ...
- java sleep函数让出cpu_线程主动让出CPU
如何让线程主动让出CPU 由于等待一个锁的线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不再需要锁的时候及时释放锁是很重要的.在以下情况下,持有锁的线程会释放锁: (1)执行完同步代码块 ...
- 如何写出让CPU跑得更快的代码?
如何写出让CPU跑得更快的代码? 一.CPU缓存有多快? 二.CPU缓存的数据结构和读取过程是什么样的? 三.如何提升数据缓存的命中率? 论如何写出让CPU跑得更快的代码,由于我们的CPU的主频已经是 ...
- python 结束语句_结束语
python 结束语句 Recently, chatter bots have been used in many services of our day lives. These bots can ...
- Linux—进程管理
1. 进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的 ...
- JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]
类的继承 Java只支持单继承,不允许多重继承 - 一个子类只能有一个父类 - 一个父类可以派生出多个子类 这里写图片描述 子类继承了父类,就继承了父类的方法和属性. 在子类中,可以使用父类中定义的方 ...
最新文章
- ThinkPHP实现定时执行任务的两种方法 - 博客频道 - CSDN.NET
- WINCE6.0+S3C6410的触摸屏驱动
- python基础知识面试题-[面试] 1. 关于Python的基础知识
- spring25:@Pointcut管理和定义切入点
- HDU 4857 拓扑排序 优先队列
- 监控系统几种常见的光端机传输方案拓扑图
- 熊猫数据集_熊猫迈向数据科学的第一步
- 网络安全之SQL注入
- 程序员面试金典——2.4链表分割
- int.Parse(),int.TryParse(),Convert.ToInt32(), (int)转换为数字类型方法简介
- OFD文件如何打印?怎么打开?如何转换PDF?
- ssm员工考勤签到请假管理系统 idea maven
- Quara 上一些有趣的问答
- python编辑器——wingIDE的使用详解
- 怎么快速剪裁照片?这款智能剪裁工具你知道吗?
- react class的写法
- 线性代数基础6--空间的基,维数,以及四种重要子空间.
- 计算机主板现状及发展趋势论文,2020年计算机主板发展趋势分析 2020-2026年全球与中国计算机主板市场深度调研与发展趋势分析...
- 方正集团面试过程。。。
- 今日芯声 | 为学生佩戴头环监测走神,这就是传说中的“紧箍咒”?
热门文章
- 从NCBI下载SRA数据
- 《AutoCAD 2016中文版室内装潢设计从入门到精通》——2.3 设置绘图环境
- 计算机辅助设计三级试题,计算机辅助设计三级项目.doc
- access设计视图打不开_5、使用数据视图创建表(ACCESS图解操作系列)
- 迅为iTOP-3568开发板安装 RKNN Toolkit Lite2
- iOS开发-Apple开发者账号详解
- 深入浅出JBoss Seam
- SM2 (国密的一种算法)
- PotPlayer突然无法播放ISO文件
- hutool 自定义excel_使用Hutool Java工具类库 导出Excel 超级简单