IBM优秀答辩考题急求:封装一种“任务调度”行为,要求低优先级的任务可以“打断”高优先级任务,且每个任务都有优先级(0~31数字),要求用“线程来模拟任务”解决思路
IBM优秀答辩考题急求:封装一种“任务调度”行为,要求低优先级的任务可以“打断”高优先级任务,且每个任务都有优先级(0~31数字),要求用“线程来模拟任务”
问题的关键是 windows createthread 创建的线程能设置 0~31 的数字吗?如何封装去模拟打断现象呢
------解决方案--------------------
windows是一个非实时的,抢占式系统,cpu采用轮询的方式,调度所有进程。
不论你任务优先级多高,也会被低优先级的进程打断。或者被硬中断的响应函数打断。
不论你任务优先级多低,也有可能被cpu调度并执行。当然轮到你干活的时候,你可以主动放弃cpu时间。(比如(Sleep,WaitForSignalObject).vxwork,ucos或者linux(实时版)的操作系统下编程,是绝对会按照你分配的优先级工作的.即,高优先级的任务(进程) 只要不放弃cpu的使用。那它可以一直不被打断的工作。
相应的,低优先级的任务(进程)即使已经被执行,也可能被高优先级的任务无情的打断。
------解决方案--------------------
------解决方案--------------------
就这个题目而言,
主要解决: 1 设置线程的优先级
2 线程提供被其他线程暂停或中断的接口
问题的关键是 windows createthread 创建的线程能设置 0~31 的数字吗?如何封装去模拟打断现象呢
------解决方案--------------------
windows是一个非实时的,抢占式系统,cpu采用轮询的方式,调度所有进程。
不论你任务优先级多高,也会被低优先级的进程打断。或者被硬中断的响应函数打断。
不论你任务优先级多低,也有可能被cpu调度并执行。当然轮到你干活的时候,你可以主动放弃cpu时间。(比如(Sleep,WaitForSignalObject).vxwork,ucos或者linux(实时版)的操作系统下编程,是绝对会按照你分配的优先级工作的.即,高优先级的任务(进程) 只要不放弃cpu的使用。那它可以一直不被打断的工作。
相应的,低优先级的任务(进程)即使已经被执行,也可能被高优先级的任务无情的打断。
------解决方案--------------------
------解决方案--------------------
就这个题目而言,
主要解决: 1 设置线程的优先级
2 线程提供被其他线程暂停或中断的接口