多线程异步工作流框架要完成的工作

来源:互联网 发布:淘宝付费流量免费流量 编辑:程序博客网 时间:2024/05/17 17:59

多线程异步工作流框架要完成的工作

       最近一段时间忙于实习的Mini-Project,很难抽出时间整理所学所感。借Mini-Project之机,回顾了之前并不熟悉的Socket编程、多线程编程,并尝试写了些跨平台的组件库,当然这些都是最最基础的版本。计划等到实习结束,回到学校之后,把知识做一些整理和总结,并把之前所写的代码进行抽象、完善和扩充,主要包括几个工作要完成:

1C++的跨平台组件库,包括网络通信、多线程、I/O处理、基本算法库等。

2)多线程异步工作流框架。

3)主/辅结构的分布式系统框架。

多线程异步工作流框架将会在Mini-Project第二次迭代中被引入,思想借鉴于肥玎大牛,该框架可以实现多线程异步执行一个工作流序列。我们可以将所要做的任何操作抽象成一个Job,将其丢入一个Job池中,则多线程即会异步地取出Job并执行。Job池可以多种方式实现,如内存、DB、文件等等;而作业的取出方式亦可以多样化,如FIFO,小作业优先,响应比优先等等。

很明显可以看出,整个多线程异步工作流框架的实现依赖于我们学习操作系统时候的两个经典的问题:生产者和消费者、作业调度。我很后悔本科时候没好好学习

多线程异步工作流框架可以应用于很多场合,比如网络收发包:网络数据都需要经过打包、发包、解包、执行这四个流程,我们就可以将它们封装成一个一个的Job,丢到一个很大的Job池里面。Client端有多个打包线程不断地将数据打包后丢到Job池中,又有多个发送线程去Job池里取包向Server发送数据;Server端有多个接包线程在接收到Client所传输的数据包后,丢到自己Job池中,再由多个解析线程取Job进行数据包的解析,最后将解析后的Job分类,丢给相应的执行Job池中,再分别由多个执行线程从对应的执行Job池中取Job进行执行。

 

这里只是举了个常见的例子,具体的实现可能会遇到很多的技术难点,要考虑各种线程的同步、考虑防止内存泄露、考虑线程安全性,还需要引入线程池、对象池等等。由于很多过程都会复用多线程异步工作流框架,对于框架的抽象性、稳定性和可扩展性的要求都会很高。另外,框架是否好用也是一个要重点考虑的因素。

嗯,时候不早了,暂时先写这么多,等实习结束了,就开始从组件库入手,将这一个框架进行抽象化和完善化,有新的进展再与大家分享经验

原创粉丝点击