首页
社区
课程
招聘
[求助]全局的消息队列处理,求建议,求优化方案。。。。。。
发表于: 2011-8-28 21:24 3863

[求助]全局的消息队列处理,求建议,求优化方案。。。。。。

2011-8-28 21:24
3863

全局的消息队列处理,求建议,求优化方案。。。。。。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
  • 1.jpg (144.93kb,128次下载)
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
第一个问题,我觉得你的意思是要向某单一进程发送“消息”,但不支持向所有进程发送“消息”。如果是针对所有进程的“消息”,那么确定这条消息什么时候从消息队列中删除是比较困难的,因为所有的进程共用一个消息队列。

第二个问题,所有要处理这种“消息”的进程都在等待同一个信号,某进程等待成功之后却有可能发现这条“消息”不是发给本进程的。这种情况下,其他的进程仍有可能做同样错误的尝试,导致浪费。

基于以上两点我提出一种方案:根据每个进程的进程ID创建两个命名内核对象,一个信号量名为xxxx_s,其中xxxx是目标进程的ID,另一个为互斥量xxxx_m。目标进程开一个专门线程等待信号量,等到了获取互斥量,取“消息”,从队列中删除“消息”,释放互斥量,释放信号量;发送“消息”方根据发送目标的进程ID推算出内核对象名字,然后获取互斥量,增加消息到队列,释放互斥量,增加信号量;我认为这种方案可以解决上述两个问题。
2011-8-29 10:27
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
其中YQMAG结构体
        DWORD dwDesId;
        DWORD dwSrcId;
        DWORD message;
        DWORD wParam;
        DWORD lParam;
        DWORD dwPriority;//0最低,默认0
        DWORD dwEventID;
根据dwSrcId dwDesId  来确定消息发送源进程ID 目的进程ID

每个进程创建一个线程互斥的访问这个消息队列,遍历消息队列,如果有符合自己进程ID的消息,则取出
2011-8-29 11:32
0
游客
登录 | 注册 方可回帖
返回
//