首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

taskspawn 分配一个任务时,参数中有优先级,堆栈大小,小弟我要如何来写啊刚刚搞这个东西

2012-02-21 
taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。taskspawn 分配一个任

taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。
taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。
我看例子中优先级大都是90,我要是创建多个任务时,都写90行吗?
还有堆栈大小我要根据什么来设置啊?
谢谢了

[解决办法]
系统默认任务优先级是100 你最好把用户任务优先级设置成100开外
[解决办法]
优先级根据设计的任务权重来分配,优先级高如算法之类的,优先级低的如IO控制致力。
都设置成一种就是时间片轮转方式调度,也可以。


堆栈大小一般是根据你程序的内存使用情况而定的,如果拿不准,可以预设大一些,然后根据运行情况(Tornado里有插件可以时时查询)再降低。一般要有50%的余量。

[解决办法]
[code=C/C++][/code]
int taskSpawn
(
char * name, /* name of new task (stored at pStackBase) */
int priority, /* priority of new task */
int options, /* task option word */
int stackSize, /* size (bytes) of stack needed plus name */
FUNCPTR entryPt, /* entry point of new task */
int arg1, /* 1st of 10 req'd task args to pass to func */
int arg2,
int arg3,
int arg4,
int arg5,
int arg6,
int arg7,
int arg8,
int arg9,
int arg10
)

一般来说,应用程序的优先级不应当比系统任务高,通常选择100以后的优先级。
另外,任务栈的大小要根据具体实现来确定,通常要考虑最深嵌套下的栈开销,
还要考虑中断栈开销以及中断嵌套的问题。
你可以先设置一个比较大的数,然后根据运行后的情况再减小栈,shell里可以查看
到栈使用的峰值,你可以在这个基础上考虑20%的冗余。
如果栈溢出,那么和内存越界操作是等同效果的。

热点排行