set_task_state和set_current_state
来源:互联网 发布:rpc java 编辑:程序博客网 时间:2024/05/01 09:19
set_task_state和set_current_state
宏定义
#define mb() __asm__ __volatile__ ("" ::: "memory")#define set_task_state(tsk, state_value) \set_mb((tsk)->state, (state_value))#define set_current_state(state_value)set_mb(current->state, (state_value))
set_task_state用于指定进程的状态,set_current_state用于指定当前进程的状态,mb宏会确保编译程序时,编译器/CPU控制单元不会把其指令缩水执行(确保本条指令不会因编译器的优化而省略,且要求每次直接读值),保证程序状态即使在乱序条件下依然能够正确赋值。
相关对比
__set_current_state和__set_task_state
#define __set_task_state(tsk, state_value) \do { (tsk)->state = (state_value); } while (0)#define __set_current_state(state_value) \do { current->state = (state_value); } while (0)
虽然这个执行快,但是如果进程状态会在同一时间有可能会被多个线程修改,那么很有可能会出现问题(譬如多个线程多次赋值执行先后顺序发生变化),但是用set_task_state和set_current_state可以保证不会出现其指令就算在乱序情况下,这几个指令的最终执行顺序不会发生变化。
0 0
- set_task_state和set_current_state
- set_current_state
- set_current_state 应用
- set_current_state 应用
- set_current_state 应用
- set_current_state 应用
- set_task_state()与__set_task_state()的区别
- set_task_state()与__set_task_state()的区别
- kernel---set_task_state(task,state)的研究『有关内存屏障问题』
- . 和 ->
- || 和&&
- .和::
- “?”和“!”
- #和##
- && 和 ||
- 、和
- #和##
- .//和..//
- 机器学习进阶路上不可错过的 28 个视频
- Java内存模型
- 自己编写的一个java简单的窗口实现两点求园面积
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Vulkan编程指南翻译 第六章 着色器和管线 第3节 管线
- set_task_state和set_current_state
- 【每天一个linux命令】chattr
- 关于路由相关
- JAVA源码解析-String源码
- Volley框架(四):使用Volley上传文件
- 云计算详解|狭义云计算与广义云计算|云计算到底是什么呢?判断云计算的标准是什么?
- Androidstudio升级后Refreshing Gradle Project编译更新Gradle卡住问题
- [OpenGL学习] mac上运行第一个openGL程序
- mongodb