忙一个项目,有半月没写Blog了,从现在的项目说起吧。
这个小项目也是一个网页数据提取工具,和上一个的区别在于不需要对网页中submit,直接读取网页数据,然后分析数据,实现的功能复杂多了,鉴于和客户协议的原因有关项目不便多说,技术可以分析一下。
说说多线程的问题。网页数据提取往往会有多个线程并行工作,这就带来几个问题:
1。线程之间怎么协调?
2。多线程的怎么管理?
3。线程取得的数据怎么同步更新,显示到界面上来?
逐个来讲我的方案,如果看客有别的想法请和我联系,学习学习。
1。线程协调:多线程工作时,线程之间如果没有数据交换或线程前后关系的依赖,就不必考虑协调的问题。当需要协调时,可以使用互斥量或者线程间的事件和消息实现,可能需要多线程管理单元参与协调。
2。管理单元:我的做法是建立一个线程池(线程列表),创建线程时根据线程之间的关系给与不同的属性(要在开发平台上派生线程类,自己定义属性)。管理单元维护线程池,负责创建和销毁线程,向线程传送数据和消息都从管理单元通过,对运行的线程提供最大的控制。
3。界面同步更新:回调或消息。
我使用的多线程问题是以管理单元为中心的。