完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题如下:在任务1中需要阻塞等待一个信号量或者消息队列,任务1在等待是被挂起,发起任务调度。这是任务2开始执行,如果这个时候在任务2中把任务1给删除了会怎么样?之后再重新建立任务1的话,任务1是从头开始执行?还是从被删除之前阻塞那里开始执行?
|
|
相关推荐
9个回答
|
|
现在项目中有这么使用,运行久了会随机出现问题,不稳定,不知道是不是这样操作的问题
|
|
|
|
已经被挂起的任务1可以被任务2删除的话,那么重建任务1的话,之前任务1的现场就啥也没有了,即从头执行! 这样理解对吗? 为何不用二值信号量?任务2释放信号量,任务1收到信号量继续执行。
|
|
|
|
任务有强制或非强制删除
|
|
|
|
系统不推荐删除任务。再次创建任务,任务会从头开始,因为创建任务的时候有一步是,初始化堆栈,即便再次创建任务使用了原来的RAM空间,依然会清零后在使用。也就是以前的任务记录都没了。你是什么逻辑啊?可以说的清楚一定吗?
|
|
|
|
我做的是一个TCP客户端的项目。在这个逻辑中我建立 了三个任务。
任务1中,客户端连接服务器,连接上后在任务1中创建任务2(客户端接收线程)、任务3(TCP发送线程),创建完之后就阻塞等待标志一个与服务器连接断开的信号量(在任务2和任务3中POST)。 任务2中处理从服务器接收的数据,判断与服务器的连接是否还在,如果断开就向任务1发送标志服务器断开的信号量。 任务3中发送数据到服务器,判断与服务器连接是否还在,如果断开就向任务1发送标志服务器断开的信号量。 任务1接收到任务2或者任务3(任意一个任务)发过来的标志与服务器断开连接的信号量后,删除任务2和任务3,然后就重新建立连接,重新创建任务2和任务3(回到上面任务1的步骤)。 |
|
|
|
三个任务的优先级怎么设的,加入2post了,但是由于1的优先级太低,在没有执行1,而是执行2或3 ,然后3也POST了,最终执行到了1,但是1只PEND了一次。还有一次没有pend所以,程序出现了逻辑上的bug。至于你的程序跑飞,也有可能不是这部分的问题。
|
|
|
|
优先级从高到低为任务1、任务2、任务3.所以应该不会出现你说的逻辑问题
|
|
|
|
确实,你这个优先级顺序不会出现我说的错误。你要看看其他地方有没有逻辑错误了。
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
510 浏览 0 评论
1033 浏览 1 评论
2415 浏览 5 评论
2738 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2554 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
589浏览 9评论
589浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
700浏览 6评论
567浏览 5评论
607浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-2 22:57 , Processed in 1.173339 second(s), Total 96, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号