| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1274 人关注过本帖
标题:如何判断一个tsk任务结束
只看楼主 加入收藏
super为爱
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-7-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
如何判断一个tsk任务结束
做项目遇到一个问题,来了一个A请求后,装置M要进行A的check,而check条件有一条是B的任务tsk不在执行状态,恰巧来A请求时,装置M正在做B动作,所以导致A的check没过,不能继续处理A的动作。然后我想到的办法是在B动作做完后再重新调一下A的check处理,这样就能check过。但是这么做就要判断B动作何时结束,B动作是一个tsk,一直在挂着,我就在tsk里加了个flg,然后写个方法去一直判断flg值,变了就说明tsk做完了,
void ReceiveMessage(unsigned short GG){
...
switch(GG){
case : A
Acheck();
break;
case : C
B();
break;
default:
 break;
 }
}
void B(){
DoB();
ext_tsk();
}
我的做法是:
bool flg=true;
void B(){
DoB();
flg=false;
ext_tsk();
}
void D(){
  while(1){
   if(flg==false){
       Acheck();
       flg=true;
       break;
      }
    dly_tsk( 100 );
   }
 }


void ReceiveMessage(unsigned short GG){
...
switch(GG){
case : A
Acheck();
break;
case : C
B();
D();
break;
default:
 break;
 }
}
这样做编译是没问题,但是用while循环占内存,dly_tsk( 100 )不知道会不会实现释放内存?然后while循环会不会造成死循环严重bug?所以说各位大神还有没有更好的办法?
搜索更多相关主题的帖子: 判断 任务 check void break 
2017-07-18 14:17
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:20 
必须随时判断吗?一般来说都可以在有必要时才判断。比如另一个模块需要知道它的执行结果,那么就在另一个模块中相应的位置加上一个判断就可以了。
2017-07-24 18:22
快速回复:如何判断一个tsk任务结束
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023569 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved