前言
在做RTT开发过程中,发生了线程卡死,做此记录
一、我创建了一个开始线程
二、该开始线程在主函数里调用
三、在开始线程里面进行其它功能线程的创建,创建完毕后,就会对开始线程进行删除
四、我目前只在开始线程里创建了一个线程,然后开始线程的优先级跟新创建的线程优先级相同,出现了程序卡死
五、将开始线程的优先级改高一级(RTT中数值越小优先级越高),程序就能正常运行了
六、目前的解释是
因为将开始线程 th_start
的优先级设置为与控制线程ControlTh_2ms_Handler
相同的值10。在开始线程中创建并启动控制线程时,由于它们的优先级相同,可能会导致竞争条件。这种竞争条件可能会导致线程无法进入临界区,从而导致程序卡死。为了避免这种情况,可以将开始线程的优先级设置为比控制线程的优先级更高的值,以确保开始线程有足够的时间在创建控制线程之前执行完毕。