一个任务,有taskSafe/taskUnsafe保护,在保护的代码段内调用connectWithTimeout。通过打印发现,即使有taskSafe保护,任务仍然在connectWithTimeout以后异常退出了。之前之后都没有任何征兆,所有状态都是正确的!另外,该任务是动态加载的模块生成的。
从来没有遇到这样的情况,求助大家,有没有人遇到并解决过此问题?谢谢
加打印或者taskSuspend来调试下,看在哪退出的就可以了
while(1)循环是什么意思?有什么影响?
估计是connectWithTimeout中的select阻塞以后被唤醒时出的问题。有可能任务控制块被破坏了。
看起来不像任务块被破坏(一般你也破坏不到)。可能是任务执行完了自己退出的,也就是没有while(1)循环一个意思。
taskSafe只是保护不被其它任务删除。当任务运行到最后一行的时候,会隐含调用一个taskDelete,而taskDelete的实现是,如果tid=0(当前任务),则调用taskUnsafe,直到删除自身任务为止。
通过调试信息看到确实不是任务自己退出的。这一点可以非常确定。