我有一个叫做interrupt_Foo() {...}
的中断函数,它在1秒过去时打开一个标志,并且一个用户定义的函数foo_calling() {...}
调用另一个函数foo_called() {...}
。我想在1秒钟内停止foo_called()
的过程。中断退出功能
的代码片段可如下阐述进一步我需要:
void interrupt interrupt_foo() {
...
if(1 second has elapsed) {
flag1s = 1;
} else {
flag1s = 0;
}
}
void foo_calling() {
// need something here to stop the process of foo_called()
...
(*fptr_called)(); // ptr to function which points to foo_called
...
}
void foo_called() {
// or something here to stop the process of this function
...
// long code
...
}
这是实时操作系统,以便轮询1个第二标志内foo_called()在代码中的一些部分是不希望的。请帮忙。
否则怎么你所期望的功能停止不投票的标志?你宁愿杀死线程吗?这听起来不像是最好的选择恕我直言。 –
这是我的问题。由于这是针对微控制器(即PIC)的,所以线程可能具有复杂的实现。如果在微控制器中做先发制人的RTOS似乎是不可能的,那么我会采用轮询而不是最后的手段。 –
我和杰夫在一起,我认为解决这个问题的唯一方法就是通过查询这个变量。根据foo_called()中的内容,有很多聪明的方法可以进行轮询,比如使用标记值或类似的东西。我看到你解决这个问题的唯一方法是,如果你正在编写/编辑实时操作系统,并以某种方式改变信号处理程序中的TCB,并且有一种聪明的方法来管理它。 – dbeer