首页 > 编程语言 > 详细

轮询算法设计及其代码框架

时间:2015-06-01 09:39:54      阅读:244      评论:0      收藏:0      [点我收藏+]

在实际的软件开发项目中,经常会遇到某模块需要向其它模块发消息的情况。为了减轻消息接收者的负担,我们会采用一种叫做轮询的机制来发送消息。本文介绍轮询算法的流程及其代码框架。

1.算法流程
假设消息发送模块为模块A,消息接收模块为模块B。模块A安装了一个,模块B安装了N个。所有模块都同时启动。
算法流程如图1所示:
技术分享
图1 轮询算法流程

2.代码框架

static int g_iSendIdx = 0;
for (iLoopFlag = 0; iLoopFlag < N; iLoopFlag ++)    // N为模块B的安装个数
{
    // 构造发往模块B的消息
    // 将消息发到模块B
    if (消息发送成功)
    {
        g_iSendIdx = (g_iSendIdx + 1) % N;    // 记录下次发送到哪个模块B
        break;
    }
    else     // 消息发送失败
    {
        g_iSendIdx = (g_iSendIdx + 1) % N;    // 记录下次发送到哪个模块B
    }
}

if (iLoopFlag >= N)
{
    // 发送失败, 不进行后续处理
}

// 继续处理下面的流程

对于轮询算法,大家需要注意的是:
(1) 该算法是为了解决消息接收者负荷过重的问题而提出的,如果消息量不大,可以直接采用一对一的模式。
(2) 对于消息发送成功的情况,一定要记录下次消息发送模块的标志。即如果当前向第一个模块B发消息成功,那么下次应该将消息发往第二个模块B。如此不断循环。


本人微信公众号:zhouzxi,请扫描以下二维码:
技术分享

轮询算法设计及其代码框架

原文:http://blog.csdn.net/zhouzhaoxiong1227/article/details/46299901

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!