流水线上的思考——异步程序开发模型(3) 推荐
2013-03-12 10:07
232 查看
上次我们讨论了关于业务之间无关联性的一种处理模式。但是对于很多的系统来说,这种无关性的处理方式是很少的,更多的恰恰是那些彼此之间存在一定联系的业务。例如:在网吧上网的玩家,一般来说他们会先进行上机,然后才下机。很少听说这个玩家还没有上机就需要下机的情况(如果有的话有可能这个系统有问题,或者出现了一些其它的原因)。 这样的业务就存在一定的关联性,在我们系统处理过程中,势必要遵从他们的业务处理逻辑来进行处理,即业务中处理也需要一定的顺序性。
对于这种具有顺序性的业务,能否利用我们之前所使用的方法来进行处理呢?下面我们来简单地分析一下。
首先,我们之前讨论的处理模式,是在接收到业务数据以后,将这些业务数据直接投递给一个IOCP的线程池来进行处理。这里我们会发现一个问题:当我们将业务1发送给一个IOCP线程池中的一个线程A以后,再投递第二个业务2时,业务处理是否为顺序的呢?如果是顺序的,那么我们就可以继续使用这种处理方式;但如果不是顺序的,那么我们肯定不能再使用这种方法。
很不幸,根据《windows核心编程(第五版)》中所讲和本人亲身测试,对于IOCP线程池的处理并不是顺序处理的。这就意味着我们需要重新构思一个方式来进行处理。
这种问题,估计每个人都有自己的处理方法,我在这里讲的处理方法仅是抛砖引玉。
我采用的是对象和线程管理的处理方法。就上面具的例子来说,就是每个网吧和一个线程进行绑定的方法。这样一来,针对每个网吧的业务数据来看,他的处理必然是顺序的,即处理完业务1后再处理业务2。
处理过程如下图:
可以看到业务从IOCP网络线程中接收到以后,需要针对此业务属于哪个对象进行区分。然后从这个对象中得到处理该对象的线程。并将这个业务投递给这个线程进行处理。
今天我们讨论了对于业务具有顺序性的数据如何进行处理的方法。并且提出了一种解决的参考方法。这种方法不一定完全适合于您,如果您知道更好的方法请您留言。
通过这三篇文章,我们从一个流水线工作方式为入口,粗略讨论了在软件开发方面如何做到类似流水线这种开发模型。其中必然存在一些不足的地方,还请大家指出,谢谢。
对于这种具有顺序性的业务,能否利用我们之前所使用的方法来进行处理呢?下面我们来简单地分析一下。
首先,我们之前讨论的处理模式,是在接收到业务数据以后,将这些业务数据直接投递给一个IOCP的线程池来进行处理。这里我们会发现一个问题:当我们将业务1发送给一个IOCP线程池中的一个线程A以后,再投递第二个业务2时,业务处理是否为顺序的呢?如果是顺序的,那么我们就可以继续使用这种处理方式;但如果不是顺序的,那么我们肯定不能再使用这种方法。
很不幸,根据《windows核心编程(第五版)》中所讲和本人亲身测试,对于IOCP线程池的处理并不是顺序处理的。这就意味着我们需要重新构思一个方式来进行处理。
这种问题,估计每个人都有自己的处理方法,我在这里讲的处理方法仅是抛砖引玉。
我采用的是对象和线程管理的处理方法。就上面具的例子来说,就是每个网吧和一个线程进行绑定的方法。这样一来,针对每个网吧的业务数据来看,他的处理必然是顺序的,即处理完业务1后再处理业务2。
处理过程如下图:
可以看到业务从IOCP网络线程中接收到以后,需要针对此业务属于哪个对象进行区分。然后从这个对象中得到处理该对象的线程。并将这个业务投递给这个线程进行处理。
今天我们讨论了对于业务具有顺序性的数据如何进行处理的方法。并且提出了一种解决的参考方法。这种方法不一定完全适合于您,如果您知道更好的方法请您留言。
通过这三篇文章,我们从一个流水线工作方式为入口,粗略讨论了在软件开发方面如何做到类似流水线这种开发模型。其中必然存在一些不足的地方,还请大家指出,谢谢。
相关文章推荐
- 流水线上的思考——异步程序开发模型(1) 推荐
- 流水线上的思考——异步程序开发模型(2) 推荐
- Winsock的事件I/O异步模型(开发网络通信程序入门的继续)
- Linux C程序I/O模型简介与异步 I/O性能模型分析
- 10款优秀组件类小程序开发demo推荐
- 推荐一个MOSS开发实例程序SharePoint Guidance
- Servlet开发【02】一个Servlet程序运行详解 推荐
- 学习计算机程序开发经典书籍推荐(学习提高的向导,值得珍藏)
- 新春第六波:《今日头条》推荐-小程序极速开发用逐浪、高端CMS用真棒
- 免费编程入门教程资源推荐搜集,分享给想开始学习程序开发的同学
- 我开发Linux服务程序的工作环境搭配 推荐
- 基于DSP/BIoS设备驱动模型的视频驱动程序开发
- 开发ssh框架程序推荐的目录结构(转)
- Winsock开发网络通信程序的经典入门——解释异步等概念
- iOS开发UI基础—21使用嵌套模型完成的一个简单汽车图标展示程序
- 第二弹:微信小程序开发思考总结—“文章阅读器和电影信息”项目实践---配置、首页面开发
- 限时团购,6.9折:《微信开发深度解析:公众号、小程序高效开发秘籍》推荐序
- iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
- 3种下载文件程序的思考,为何使用NIO进行异步网络通讯