打印

实时系统里,在线程内如何实现return的效果

[复制链接]
1447|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
st316|  楼主 | 2012-4-27 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 st316 于 2012-4-27 17:04 编辑

刚接触线程这概念。假设我的线程是个死循环,结构如下:
void rt_thread_entry_calculate(void* parameter)
{
    while(1)
    {
        ......

        if(标志位)
            ......
        else
            从while最开始执行
        ......
        ......   
    }
}

在一般的函数里, return就可以达到这个效果
在这里,用线程DELAY不管用,DELAY完了之后似乎会接着执行第三个省略号部分的程序。
沙发
香水城| | 2012-4-27 17:05 | 只看该作者
应该有一个要求进程(线程)调度的调用,我不会RT-Thread,坐下来听听。

使用特权

评论回复
板凳
aozima| | 2012-4-27 18:22 | 只看该作者
本帖最后由 aozima 于 2012-4-27 18:29 编辑

RT-Thread的线程所在函数可以直接return.
return后,此线程就不再存在。(如果是动态创建的,会自动释放所占用资源)

但没太听明白楼主的意思。
觉得楼主所需要的是  continue



在一般的函数里, return就可以达到这个效果

一般的函数里,return 就直接退出函数了,也不会运行到 while(1)处再来。

使用特权

评论回复
地板
st316|  楼主 | 2012-4-27 20:35 | 只看该作者
本帖最后由 st316 于 2012-4-27 20:37 编辑
RT-Thread的线程所在函数可以直接return.
return后,此线程就不再存在。(如果是动态创建的,会自动释放所占用资源)

但没太听明白楼主的意思。
觉得楼主所需要的是  continue




一般的函数里,return 就直接退出 ...
aozima 发表于 2012-4-27 18:22
噢,确实没说清楚,应该是下一次线程运行时,希望从while(1)这里开始执行,而如果用DELAY的话会从DELAY后面的语句开始执行。
想了两个办法:
1、用GOTO跳转;
2、在原来的while(1)外面再加一层while(1),这样就可以用break跳出里层的while。:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

167

帖子

3

粉丝