在rt-thread中,保护临界区的方法除了IPC线程间通信机制,然后就是调度锁与关闭中断了。 调度锁 rt-thread调度锁的目的是让调度器停止工作,这时不进行线程的切换工作。也就是说,在调度锁范围内的代码是独占CPU资源的,当前的被调度锁锁住的代码不能切换到其他的线程。 调度锁不会阻止系统的响应中断,中断处理完成退出...
调度器如果主动去执行rt_thread_delay或者rt_thread_mdelay会发生什么事情? 我们知道,我们如果要让线程释放资源,只需要调用上述两个函数,就可以切换到其他线程,同时我们的理解上常常会认为这个就是一个等待延时函数,从而当做延时函数来使用,实际上来说,当在调度锁中执行这个delay函数,实际上是无效的,也就是说,无论de...
在rt-thread中,保护临界区的方法除了IPC线程间通信机制,然后就是调度锁与关闭中断了。 调度锁 rt-thread调度锁的目的是让调度器停止工作,这时不进行线程的切换工作。也就是说,在调度锁范围内的代码是独占CPU资源的,当前的被调度锁锁住的代码不能切换到其他的线程。 调度锁不会阻止系统的响应中断,中断处理完成退出...
1.前言 RT-Thread系统开发,业务应用使用到了RT-Thread的调度器锁,因为使用不慎导致走了一部分弯路。致命的错误是,未有考虑到逻辑的执行与非执行后果,线程上锁后,逻辑条件未满足调度锁未能释放,从而导致其他线程未能获得CPU资源,出现是系统“假死”的现象。由于逻辑条件比较难重现,任务线程也及中断条件也不少,查...
RT-Thread 源码中有许多处临界段的地方,临界段虽然用中断锁保护了关键代码的执行不被打断,但也会影响系统的实时,任何使用了操作系统的中断响应都不会比裸机快。 在中断服务函数中也可以使用中断锁,防止被更高优先级的中断打断(CM3支持中断嵌套) RT-Thread学习笔记 中断锁、调度锁与死锁.pdf (300.62 KB, 下载次数...