voidx 发表于 2009-12-11 15:18:29

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

请问:多任务内核,一个任务A如何把另外一个任务B挂起?

yyccaa 发表于 2009-12-11 15:27:31

如果允许的话,应该也就是调用系统的API设置任务B的状态为挂起,这样进程调度时就不会选择B了。

s020102s 发表于 2009-12-11 15:36:29

一般有三种情况:
1, 中断引发任务挂起
2, 调用系统服务
3, 自身阻塞

voidx 发表于 2009-12-11 16:33:51

说明一下,我用的不是现成RTOS,而是自己写的 简单内核,想要用一个任务挂起另外一个任务,

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

s020102s 发表于 2009-12-11 16:45:15

清除任务栈即可。

voidx 发表于 2009-12-11 16:54:39

任务挂起,不是删除,可以再恢复。

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

s020102s 发表于 2009-12-11 17:02:42

减1

ralfak 发表于 2009-12-16 00:36:11

这个问题也好处理
你挂起前先检查它有没有占有资源,如果占有了,则不能挂起
这时可以给这个任务块安排一个标志量,等它释放资源后,自身将自身挂起就OK了

rainyss 发表于 2009-12-16 05:54:36

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

voidx 发表于 2009-12-16 18:04:58

还是采用了,在任务控制块加个 挂起请求标志,任务自己在主循环查询这个标志,然后自己挂起自己。

rainyss 发表于 2009-12-18 04:11:09

恭喜,这才是正解.最笨的办法往往最管用.

usingavr 发表于 2009-12-18 08:46:27

【9楼】 voidx void *

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

---------------------------------
把这个操作封装到释放资源的api中如何?
页: [1]
查看完整版本: 请问:多任务内核怎么把任务挂起(任务A挂起任务B)?