您好,来自https://www.embedded.com/design/operating-systems/4008268/2/Back-to-the-Basics--Practical-Embedded-Coding-Tips-Part-1的文章中提到了如何使函数可重入。
long i;
void do_something(void){
disable_interrupts();
i+=0x1234;
enable_interrupts();
}
Autor 说:“这个解决方案不起作用。如果 do_something() 是一个通用例程,可能从许多地方调用,并且在禁用中断的情况下调用,它会在重新打开它们后返回。机器的上下文发生了变化,可能在很短的时间内危险的方式。”
我不明白究竟是如何改变机器的上下文是危险的?有人可以举一些例子来说明这可能导致有害后果吗?