1 / 4
文档名称:

(网络编程).doc

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

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

分享

预览

(网络编程).doc

上传人:1314042**** 2021/2/24 文件大小:29 KB

下载得到文件列表

(网络编程).doc

相关文档

文档介绍

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