首页
社区
课程
招聘
处理数据的优先级??
发表于: 2005-5-9 03:13 3866

处理数据的优先级??

2005-5-9 03:13
3866
(知道这里的大牛们都有读过windows的代码 问个跟crack不大关系的算法)

处理数据的优先级??
typedef struct command{
   int a;
   float b;
}CMD;

CMD cmd1;
就是现在有很多CMD(从数据包里分离出来的)

怎么把这写CMD排序列啊  

比如  cmd1.a   
要是a=300 优先处理   
      a=233  第2处理   
      a=677  第3处理

偶想再定义一个typedef struct MyCommand{
                           CMD  cmd;
                           int i; //优先级别  就是在原来的结构上加一个变量 定义优先级 如1,2,3等
                     }MyCmd;

MyCmd Mycmd1;
然后  switch(MyCmd1.cmd.a)
        {
              case 300:
                     MyCmd.cmd.i=1;  //第1优先
                     break;
              case 233:
                     MyCmd.cmd.i=2;  //第2优先
                     break;
               case 677:
                     MyCmd.cmd.i=3;  //第3优先
                     break;
       }

然后做个stack把MyCmd.cmd.i小的先入栈  MyCmd.cmd.i大的后入  这样能优先级高的数据先处理了   

可是那些数据包非常多  觉着这样的效率好象不怎么高啊  而且那些MyCmd.cmd.a有几百个 case就有几百个  以后要是代码修改的时候_-##    还有加个变量处理优先级 还有stack

=========
有什么更好点的办法吗?(windows的消息好象就有优先级的  他是怎么处理的? 找不到windows的代码  哪位大虾给说说思路吗?)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
能用链表弄吗   可还是觉的不大满意
2005-5-9 03:16
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还有GetMessage API能实现没有消息时就先睡着  要是有消息过来就醒过来   这种要怎么实现啊(睡着的时候总不能Sleep(n)吧。 醒来的时候是鼠标硬盘等中断才让他醒过来的  可是那些数据包的结构没有那些中断啊)
2005-5-9 03:20
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
用查表的方法来根据cmd值取优先级值,可以用hash链表,偶没学过数据结构就不多扯了。
GetMessage偶也只会用,原理暂时没弄清
2005-5-9 04:21
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
从来没见过真正的windows源代码
2005-5-9 04:24
0
游客
登录 | 注册 方可回帖
返回
//