我有一个原型线程设置和阻塞......
static int mythread(struct pt *pt){
static int k;
PT_BEGIN(pt)
while(1){
PT_WAIT_UNTIL(pt, eventA == 1); // blocked at lineA
for(k=0;k<100;k++){
//do something
PT_YIELD(pt); //blocked at lineB
}
PT_WAIT_UNTIL(pt, eventB == 1); //block at lineC
}
PT_END(pt)
}
一段时间后,mythread
可以在“lineA”、“lineB”或“lineC”处被阻塞。
一个外部函数,比如main()
重置,怎么会mythread
在开头的“lineA”处再次被阻塞。
通过运行宏PT_RESTART(&pt_mythread)
?编译器不喜欢它。因为我的main()
函数不在 PT_BEGIN, PT_END 块内,所以return
那个宏的内部是坏的,坏的。
还是又跑PT_INIT(&pt_mythread)
了?有什么建议么?