【发布时间】:2020-04-17 02:22:10
【问题描述】:
假设您有两个任务。每个都有自己的复杂模块,运行基于计划的系统和基于事件的系统。在考虑上下文切换时,任务调度程序究竟何时以及如何决定何时切换任务,并且在某一时刻它可以做到这一点吗?在执行代码块的过程中任务会切换吗?就在函数的中间?
作为参考,我在 vxworks 环境中工作。
【问题讨论】:
-
执行任务切换的某些时间:1)时间片到期时 2)任务执行任何 I/O 时 3)任务调用“上下文切换”函数时 4 ) 当更高优先级的任务变为“就绪”时 5) 当正在运行的任务退出时 列表继续进行
-
在函数执行过程中会发生这种情况吗?
-
任何指令和下一条指令之间以及某些重复指令期间都可能发生上下文切换。
-
您能否在一条指令中使用 aquire 指向共享内存的指针,例如
p = GetGlobalPtr(),然后在能够使用它之前p->Do();使其变为 null 或以其他方式无效? -
这是两个陈述。语句导致(大多数时候)许多指令。
标签: c++ c multithreading task vxworks