搜索
bottom↓
回复: 11

请问:多任务内核怎么把任务挂起(任务A挂起任务B)?

[复制链接]

出0入0汤圆

发表于 2009-12-11 15:18:29 | 显示全部楼层 |阅读模式
请问:多任务内核,一个任务A如何把另外一个任务B挂起?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-12-11 15:27:31 | 显示全部楼层
如果允许的话,应该也就是调用系统的API设置任务B的状态为挂起,这样进程调度时就不会选择B了。

出0入0汤圆

发表于 2009-12-11 15:36:29 | 显示全部楼层
一般有三种情况:
1, 中断引发任务挂起
2, 调用系统服务
3, 自身阻塞

出0入0汤圆

 楼主| 发表于 2009-12-11 16:33:51 | 显示全部楼层
说明一下,我用的不是现成RTOS,而是自己写的 简单内核,想要用一个任务挂起另外一个任务,

问题在 任务挂起前,怎么把任务占用的资源释放掉。

出0入0汤圆

发表于 2009-12-11 16:45:15 | 显示全部楼层
清除任务栈即可。

出0入0汤圆

 楼主| 发表于 2009-12-11 16:54:39 | 显示全部楼层
任务挂起,不是删除,可以再恢复。

任务挂起前,释放占用资源,指占用的信号量等。

出0入0汤圆

发表于 2009-12-11 17:02:42 | 显示全部楼层
减1

出0入0汤圆

发表于 2009-12-16 00:36:11 | 显示全部楼层
这个问题也好处理
你挂起前先检查它有没有占有资源,如果占有了,则不能挂起
这时可以给这个任务块安排一个标志量,等它释放资源后,自身将自身挂起就OK了

出0入0汤圆

发表于 2009-12-16 05:54:36 | 显示全部楼层
1.这种问题是无解的,物理法则决定了这是不可能,MS,UNIX,LINUX,那个解决这问题了?
2.退而求其次的解决办法在操作系统原理书里面大把说明,把你用到的资源通通注册到一个表里面.
3.具体问题具体解决,把你DIY的那个OS整个打包上来.我很奇怪你能写出OS,却不知道如何处理资源.见过不会转方向盘的F1赛手没?

出0入0汤圆

 楼主| 发表于 2009-12-16 18:04:58 | 显示全部楼层
还是采用了,在任务控制块加个 挂起请求标志,任务自己在主循环查询这个标志,然后自己挂起自己。

出0入0汤圆

发表于 2009-12-18 04:11:09 | 显示全部楼层
恭喜,这才是正解.最笨的办法往往最管用.

出0入0汤圆

发表于 2009-12-18 08:46:27 | 显示全部楼层
【9楼】 voidx void *

积分:280
派别:
等级:------
来自:
还是采用了,在任务控制块加个 挂起请求标志,任务自己在主循环查询这个标志,然后自己挂起自己。

---------------------------------
把这个操作封装到释放资源的api中如何?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 20:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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