笔记
文章平均质量分 53
雪*夹雨夹*雪
这个作者很懒,什么都没留下…
展开
-
优先级反转问题
优先级反转 假设当前有任务A,B,C优先级分别为1,2,3(注意优先级数字越低,优先级越高)。此时如果高优先级的任务A、B正在处于挂起状态,最低优先级任务C正在运行并通过获取互斥量M进入临界区处理。稍后A、B任务就绪了,A任务优先级最高所以获得运行权限,从而抢占了C任务,A任务运行也需要获取互斥量M,而此时发现互斥量M已经被任务C占有。所以A任务就挂起在互斥量M上,只能等待C任务释放互斥量M才能得以运行。接着由于B任务已经是就绪态,并且优先级高于任务C,因此任务B获得运行,直到B运行完后,才使得任务C获得运原创 2021-10-19 20:58:07 · 279 阅读 · 0 评论 -
原子变量和原子操作的使用示例
这个例子是从安卓Android10.0源码logd模块摘取,文件路径:yukawa\system\core\liblog\logd_writer.cpp 这里详细解析什么是原子变量和原子操作,只对源码中对原子变量的运用做一些简单的分析。 这个文件的代码是安卓中log模块接口部分,即应用写log时通过套接字需要将log发送到log服务器,这里是应用client端初始化时对socket进行初始化。对于客户端进程而言,这个初始化过程而言只需要初始化一次就可以了。然而在多线程环境下就有可能造成多次初始化。 对于这种原创 2021-07-25 17:26:33 · 628 阅读 · 0 评论