- 论坛徽章:
- 0
|
大家好,哪位朋友能帮忙解决一下下面的问题,不胜感激.如果在北京的话,请客,付费都可以。
问题描述
现状:
有一个发信进程(服务)A,不停的从队列中获得消息,每次获得一个消息(在这里就是一封邮件),就调用程序B(通过函数execvp(*args,args)调用)把消息发给远端的服务器,相当于每次都启动一个新的进程,程序B通过匿名管道把发信结果返回给发信进程A。
需求:
目前程序B接受到消息后无条件的向远程发送,需要修改成对消息(邮件地址)进行判断,单位时间内发送同一个邮件域的消息需要有一个限制,如果超过这个限制,就要等待。
修改方案:
1. 通过共享内存实现:首先在进程A中开辟一块共享内存,用来保存每个邮件域的发送情况(一分钟内发送的情况),程序B在发送之前,先去获得共享内存中的数据,查看是否超过了限制,如果超过,等待;如果没有超过,那么更新共享内存中的数据,然后向远程发信。
2. 通过匿名管道实现:起一个新的服务,用来维护每个邮件域的发送情况,然后程序B的每一个新进程通过匿名管道去查看是否能够发送。
请问修改方案1或者2是否可行?是否可以帮忙写一下,或有类似的例子参考。
联系:
msn:zhiyuanyin(@)hotmail.com
email:yinzhiyuan(@)gmail.com |
|