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

来源:互联网 发布:mt4顾比均线指标源码 编辑:程序博客网 时间:2024/05/22 16:38

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

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,请扫描以下二维码:
这里写图片描述

1 1
原创粉丝点击