技术论坛

 回复:出道题: 类似FIFO的程序

返回主题列表
作者 主题
无名
侠士

经验值:1768
发帖数:904
精华帖:11
楼主    2006-03-25 11:26:59
主题:出道题: 类似FIFO的程序
类似FIFO的程序,正在进行的项目中用到的,看大家有没有更好的办法交流一下
16个任务 1-16 分别代表16个不同的任务号
有16个缓冲区: 整型,存16个任务的任务号, 0代表无任务
一个设置单元: 可以写0-16 的任务号, 设置99时缓冲区任务清零,无任务.
一个完成位: 代表第一个任务完成位,上升沿把缓冲区内的第一个任务去掉.
要求:
1:通过设置单元的数字实时添加设置任务(即进栈),并且进栈时,16个缓冲区的任务号不能重复.先进的排在栈顶.
2:完成位有效时,栈顶出栈, 栈底补0,即常用的"冒泡".



师出无名
清风飞扬
侠客

经验值:605
发帖数:155
精华帖:2
    2006-03-31 12:23:01
精华帖  主题:回复:出道题: 类似FIFO的程序
遍历搜索队列代价是很高的,而这个表不需进行遍历搜索。
这个表可以建16行,每一行唯一对应一个事件。比如:第一行存储事件1,第二行存储事件2,以此类推第16行存储事件16。
我们可以事件号作为参数直接寻址到所对应的行,比如:当前事件号是6,就直接查询该表的第6行。这样就可以判断是否向队列添加该事件。
shine
至圣

经验值:19820
发帖数:8803
精华帖:39
    2006-04-02 22:33:26
精华帖  主题:回复:出道题: 类似FIFO的程序
其实遍历队列的开销和进队列/出队列的是差不多的,除非使用环形队列。
如果不想遍历队列,可以在建立队列的同时建一个表,和清风飞扬说的一样,一个16行的表,当某事件进队时,该表中对应行置位,出队列时复位。进队之前先检查该位即可。

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。