1 / 4
文档名称:

(网络编程).doc

格式:doc   大小:29KB   页数:4页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

(网络编程).doc

上传人:xzh051230 2019/1/14 文件大小:29 KB

下载得到文件列表

(网络编程).doc

相关文档

文档介绍

文档介绍:袁唯才1,程向民2,王辉3,史岩4,张翼5(1,2,3,4,5,中国人民保险公司江西省公司,江西南昌 330008)摘要:详细介绍了多线程的原理和使用方法,就VC++中串口通信问题使用多线程作了例程,实际运行结果表明了这种编程方法的正确性和可靠性。关键词:多线程;串行通信;同步;进程中图分类号:TP31文献标识码:A0引言当前流行的Windows操作系统,它能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。用进程和线程的观点来研究软件是当今普遍采用的方法。在现代的各种实时监控系统和通信系统中,在Windows9X/NT下利用VC++对RS2232串口编程是常用的手段。本文详细介绍了基于多线程技术的串口通信编程方法,并给出了例程。1 VC++对多线程的支持Windows9X/NT是抢先式的多任务操作系统,程序对CPU的占用时间由系统决定。多任务指的是系统可以同时运行多个进程,每个进程又可以同时执行多个线程。进程是应用程序的运行实例,由私有的虚拟地址空间、代码、数据和其它系统资源组成。每个进程拥有一个主线程,同时还可以建立其他的线程。进程在运行时创建的资源随着进程的终止而死亡。线程是操作系统分配CPU时间的基本实体,每个线程占用的CPU时间由系统分配,系统不停地在线程之间切换。它是一个独立的执行流,是进程内部一个独立的执行单元,相当于一个子程序,它对应VisualC++中的CWinThread类的对象。进程中的线程共享进程的虚拟地址空间,可以访问进程的资源,处于并行执行状态。在VC++,MFC应用程序的线程由CWinThread对象表示。线程被分为两种:用户界面线程和工作线程(又称为后台线程)。用户界面线程通常用来处理用户的输入并响应各种事件和消息,其实,应用程序的主执行线程CWinAPP对象就是一个用户界面线程,当应用程序启动时自动创建和启动,同样它的终止也意味着该程序的结束,进程终止。工作线程用来执行程序的后台处理任务,比如计算、调度、对串口的读写操作等,它和用户界面线程的区别是它不用从CWinThread类派生来创建,对它来说最重要的是如何实现工作线程任务的运行控制函数。工作线程和用户界面线程启动时要调用同一个函数的不同版本;最后需要读者明白的是,一个进程中的所有线程共享它们父进程的变量,但同时每个线程可以拥有自己的变量。程序一般不需要直接创建CWinThread对象,通过调用AfxBeginThread()函数就会自动创建一个CWinThread对象,从而开始一个进程。创建上述的两种线程都利用这个函数。线程的终止取决于下列事件之一:线程函数返回;线程调用ExitThread()退出;异常情况下用线程的句柄调用TerminateThread()退出;线程所属的进程被终止。2 串口通信对线程同步的要求因为同一进程的所有线程共享进程的虚拟地址空间,而在Windows9X/NT系统下线程是汇编级中断,所以有可能多个线程同时访问同一个对象。这些对象可能是全局变量,MFC的对象,MFC的API等。使用多线程的过程中需要注意的问题是如何防止两个或两个以上的线程同时访问同一个数据,以免破坏数据的完整性。保证各个线程可以在一起适当地协