1. 方案一是xml文件下载和解析在一个线程中实现。方案二是由主函数维护一个队列,一个线程池负责下载xml文件到本地,然后将文件名放入队列尾部,另有线程池负责从队列头提取文件名然后解析文件。方案二结构比较清晰,一个线程池IO操作多,另一个线程池cpu运算多,结合起来效率会高些。开始时程序按照方案二编写,但一直未能调试通过,由于时间关系,改为方案一实现。
2. 由于要下载和解析的xml文件数量较大,考虑客户等待时间,需要使用多线程来实现下载和解析。同时又考虑系统负载,不能针对每一次下载和解析都先创建一个线程再销毁。解决方案是使用线程池,每个线程完成一次下载和解析后被线程池回收,再用于其它下载和解析。程序中使用了glib提供的线程池实现。
3. 当某一线程找到与用户输入视频名相应的id时,如何立即结束线程池中其他线程的工作,同时又不结束本进程?该问题目前还未解决。目前实现是等到所有xml文件都被下载和解析后才开始根据id下载视频。
4. if-else嵌套过多,导致代码结构不清晰。未解决!
5. 错误处理只是打印出错信息,需要统一的清晰的错误处理模块。
6. connect改为非阻塞模式,不知在这里是否有意义?
阅读(869) | 评论(0) | 转发(0) |