码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-06-01 09:41:17      阅读:164      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!