我猜应该是这样子的,
发生中断。中断处理函数中遇到线程切换请求(A —> B)。调用 rt_hw_context_switch()/ rt_hw_context_switch_interrupt() 函数悬起 PENDSV ,准备进行线程切换。注意,当前点还没有真正执行切换。from_thread=A,to_thread=B。
继续处理中断,又遇到线程切换请求 (B —> C)。此时要注意:由于之前
有过一次线程切换的请求,但是还未执行。所以 from_thread 没有改变,仅仅是 to_thread 线程改变了。所以仅需要更改 to_thread。得到 from_thread=A,to_thread=C
出中断后,执行 PENDSV。将线程从 A 切断到 C。
我猜应该是这样子的,
发生中断。中断处理函数中遇到线程切换请求(A —> B)。调用 rt_hw_context_switch()/ rt_hw_context_switch_interrupt() 函数悬起 PENDSV ,准备进行线程切换。注意,当前点还没有真正执行切换。from_thread=A,to_thread=B。
继续处理中断,又遇到线程切换请求 (B —> C)。此时要注意:由于之前有过一次线程切换的请求,但是还未执行。所以 from_thread 没有改变,仅仅是 to_thread 线程改变了。所以仅需要更改 to_thread。得到 from_thread=A,to_thread=C
出中断后,执行 PENDSV。将线程从 A 切断到 C。
举报