你要了解OS有原理才行。
简单说,OS有个心跳,比如每5ms执行 1次。
那么每秒钟OS至少可以进行200次任务切换。
5ms中断就是所谓的系统心跳。
比如你任务要延时503ms,那么可以分成5*100+3,500ms使用系统心跳实现延时(这个处理就是OS的精髓了)、这个500ms延时就由OS托管,OS会给任务做标记,当开始延时时,任务进入挂起状态,然后等到100次调度完成,OS就会再启动任务,完成500ms延时,然后剩下的3ms,就死等了。
所以延时最好是系统心跳的整数倍,这就不会浪费CPU。
你要了解OS有原理才行。
简单说,OS有个心跳,比如每5ms执行 1次。
那么每秒钟OS至少可以进行200次任务切换。
5ms中断就是所谓的系统心跳。
比如你任务要延时503ms,那么可以分成5*100+3,500ms使用系统心跳实现延时(这个处理就是OS的精髓了)、这个500ms延时就由OS托管,OS会给任务做标记,当开始延时时,任务进入挂起状态,然后等到100次调度完成,OS就会再启动任务,完成500ms延时,然后剩下的3ms,就死等了。
所以延时最好是系统心跳的整数倍,这就不会浪费CPU。
举报