发 帖  
原厂入驻New
UCOSIII任务如何删除和重新创建?
50 UCOSIII
分享
问题如下:在任务1中需要阻塞等待一个信号量或者消息队列,任务1在等待是被挂起,发起任务调度。这是任务2开始执行,如果这个时候在任务2中把任务1给删除了会怎么样?之后再重新建立任务1的话,任务1是从头开始执行?还是从被删除之前阻塞那里开始执行?
0
2020-6-1 07:41:27   评论 分享淘帖 邀请回答
9个回答
现在项目中有这么使用,运行久了会随机出现问题,不稳定,不知道是不是这样操作的问题
2020-6-1 15:32:11 评论

举报

已经被挂起的任务1可以被任务2删除的话,那么重建任务1的话,之前任务1的现场就啥也没有了,即从头执行! 这样理解对吗? 为何不用二值信号量?任务2释放信号量,任务1收到信号量继续执行。
2020-6-1 15:40:55 评论

举报

任务有强制或非强制删除
2020-6-1 15:58:15 评论

举报

系统不推荐删除任务。再次创建任务,任务会从头开始,因为创建任务的时候有一步是,初始化堆栈,即便再次创建任务使用了原来的RAM空间,依然会清零后在使用。也就是以前的任务记录都没了。你是什么逻辑啊?可以说的清楚一定吗?
2020-6-1 16:10:29 评论

举报

我做的是一个TCP客户端的项目。在这个逻辑中我建立 了三个任务。
    任务1中,客户端连接服务器,连接上后在任务1中创建任务2(客户端接收线程)、任务3(TCP发送线程),创建完之后就阻塞等待标志一个与服务器连接断开的信号量(在任务2和任务3中POST)。
   任务2中处理从服务器接收的数据,判断与服务器的连接是否还在,如果断开就向任务1发送标志服务器断开的信号量。
   任务3中发送数据到服务器,判断与服务器连接是否还在,如果断开就向任务1发送标志服务器断开的信号量。
   任务1接收到任务2或者任务3(任意一个任务)发过来的标志与服务器断开连接的信号量后,删除任务2和任务3,然后就重新建立连接,重新创建任务2和任务3(回到上面任务1的步骤)。
2020-6-1 16:27:05 评论

举报

三个任务的优先级怎么设的,加入2post了,但是由于1的优先级太低,在没有执行1,而是执行2或3 ,然后3也POST了,最终执行到了1,但是1只PEND了一次。还有一次没有pend所以,程序出现了逻辑上的bug。至于你的程序跑飞,也有可能不是这部分的问题。
2020-6-1 16:42:27 评论

举报

优先级从高到低为任务1、任务2、任务3.所以应该不会出现你说的逻辑问题
2020-6-1 16:48:43 评论

举报

确实,你这个优先级顺序不会出现我说的错误。你要看看其他地方有没有逻辑错误了。
2020-6-1 16:59:47 评论

举报

像这种有2个以上post怎么处理啊?
我是先将信号量设置为0: OSSemSet(sem, 0, &oserr),然后再POST,感觉很挫。。。

只有小组成员才能发言,加入小组>>

262个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表