轮询算法设计及其代码框架
来源:互联网 发布: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
- 轮询算法设计及其代码框架
- 算法及其设计原则
- Apriori算法及其代码
- Struts2框架及其设计模式
- 【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
- RANSAC算法及其代码解析
- “多线程”简介及其C代码实现框架
- 算法设计和代码设计
- SSH2框架设计---代码整合
- 支持向量机算法及其代码实现
- 支持向量机算法及其代码实现
- 支持向量机算法及其代码实现
- 哈希表及其常用算法(代码实现)
- EM算法及其应用(代码)
- 在线机器学习算法及其伪代码
- EM算法及其应用(代码)
- 排序--归并算法思想及其代码实现
- 协同过滤算法及其实现代码
- hdu 5242 树链剖分找权值最大的前k条链
- __stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简介
- 机器学习实战
- 人脸表情识别文献阅读
- poj 3276
- 轮询算法设计及其代码框架
- struts2标签中<s:textfield>中label不显示
- db2常用命令大全
- xbmc 从android_main启动时的部分步骤记录
- TreeView控件
- cookies的Base64()加密创建删除查询
- ViewPager的基本使用
- Sublime+scala
- 《PHP内核探索系列文章》系列技术文章整理收藏