RTT线程管理篇——rtt线程恢复

rtt线程恢复,关键是第一步是有个:移除当前线程在任意表中的挂钩。
这个就厉害了,避免了重复恢复。
比如我设定一定时间等待某个信号量,等待时的操作:从就绪表中移除当前线程的挂钩,将其挂到信号量的阻塞链表中。 若等待时间到了,那就执行线程超时函数恢复当前线程:移除当前线程的挂钩挂到的表,然后把它挂到就绪表上。——这就避免了后面等到了信号量它再次恢复时重复挂——因为我已经从你这个架子上移除了,你看不到我了!信号来了你也找不到我了!这就是链表的好处!
线程恢复的第一个步骤:
判断当前线程是否已恢复,若恢复就不用恢复它了。保证不重复恢复。
第二步骤,移除恢复线程挂在任何阻塞表的钩子,挂到就绪表中。我不管你挂到哪个阻塞表,我移除的操作是不管的,反正我前面判断你不是就绪状态,那肯定挂到一个链表中去了——我不管你这个链表是系统阻塞链表、还是IPC阻塞链表、还是同步阻塞链表等,我不用管,我直接可以把挂钩移除,,从你这个位置的表上拿走,我挂到就绪表上!
第三步,调度,若恢复的线程优先级最高,那执行上下文切换呀,否则不切换。
完事!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值