论文部分内容阅读
在多任务Windows编程中,为了提高代码的时、空效率,广泛采取后台程序和前台程序。为恰当地完成任务,往往以线程来实现前台任务及后台任务,从而线程间的通信就是广泛的要求了。 Visual C++ 6.0 MFC提供了Windows95/NT环境下面向对象的程序开发环境,它以其预先编写好的大量类及支持代码,用于处理多数标准的Wndows编程任务。借助于该开发环境及类代码的高可靠性、标准化,可获得高质量的应用程序代码。 本论文以陕西省自然科学基金项目(2001年度)—软件逆向工程技术研究为背景,提出了一种软件再设计(redesign)方法,它以面向对象的分析和设计为指导,详述了Windows编程的一个应用领域:多线程通信技术。基于微软基础类库MFC(Microsoft Foundation ClassLibrary)实现多线程通信程序。其意义在于恰当地解决了软件逆向工程的需要、软件复用、软件可靠性、模块化及开发时间、费用等方面的综合要求。 通过对目标系统及软件需求的分析,可得到再设计软件的功能模型,借助于MFC,即可产生模块化,标准化的高质量代码,此过程中还可生成相关文档,而程序结构隐藏于系统中了,并可得到以类来表示目标系统软件的快速模型。 线程分为辅助线程(工作者线程)和用户界面线程。辅助线程没有消息循环队列和窗口,所以它不能接收消息,它被用于完成后台任务,如CPU密集型的计算,文件I/O等等。在论文的通信程序实现中,辅助线程实现一个耗时巨大的循环计数,如果没有主线程与辅助线程的通信,CPU将被阻塞住。用户界面线程有消息循环队列和窗口,它可以接收消息。 论文详述了MFC库的概貌并展示了类之间的关系,以及进程、线程及其在Visual C++6.0中的实现。论文的主体致力于3种MFC直接支持的线程通信方式的关键技术,即通过全局变量、通过用户自定义消息、通过事件对象。在多线程通信程序实现中展示了辅助线程与主线程的通信原理、实现方法。主线程是一个基于对话框的控件,辅助线程是一个耗时很长的循环计数。他们通过用户自定义消息和事件对象通信。若没有主线程与辅助线程的通信,CPU将被阻塞很长一段时间。实现了他们的通信,我们可以轻而易举地控制这个循环计数。 由多线程通信程序的设计和实现可得出结论,多线程通信对那些需要更高效率的执行时间、存储空间、较短开发周期和较高可靠性的应用领域是很有用的,并且我们可以轻松地把这种方法推广到工业控制和测试应用中,例如可把程序的结构安排成主线程和辅助线程,在主线程中可进行有关初始化及协调各辅助线程。把那些耗时多的任务安排在后台并由辅助线程实现,从而系统可按优先级来调度它们。可以按照文中介绍的技术使这些线程通信以完成特定任务。