文档详情

多线程与网络编程初步 .pdf

发布:2019-04-02约4.32万字共30页下载文档
文本预览下载声明
第 10章 多线程与网络编程初步 教学提示:Windows 是一个支持多任务的操作系统。当在一个程序中需要启动另外一 个程序时,需要用到多进程的编程方式。如果一个进程中有一些相似的任务需要同时推进, 可以为每个任务建立一个线程,从而形成多线程的编程。随着网络技术的广泛应用,网络 编程也越来越受到重视,网络编程主要使用Winsock 技术。 教学目标:掌握进程的创建与终止及相应的管理,了解线程的基本概念,并掌握线程 的创建及使用。能够使用Winsock 进行简单的网络编程。 10.1 Windows 的多任务 Windows 是一个支持多任务的操作系统。现在可以在欣赏电脑播放 CD 音乐的同时, 一边打印文件,一边编辑文件,这在以前的 DOS 操作系统的时候是不可能的。因为 DOS 是一个单用户、单任务的操作系统,一个时间段内只能运行一道程序。而 Windows 环境下 却可以做到这点,这都是得益于 Windows 的多进程处理及多线程处理功能。除了上述所说 的多任务的优点,再来看一下网络应用盛行的当今时代,多任务给我们带来的益处。作为 一个网络服务器,比如搜狐网站,每个时刻都要接收来自客户端的数量巨大的网络服务请 求,如果没有多任务环境的支持,而是处理完一个请求后再处理下一个,这样大家在上网 时就得在自己的机器前坐等其他的请求处理完后再得到响应。但实际情况却非如此,我们 可以随时上网,感觉不到其他人的存在,这就是操作系统的多任务也就是多进程、多线程 机制所带来的优越性。 在 VC 中如何设计一个多任务程序,甚至如何使用这种技术来实现网络应用,这都是 作为程序员首先要关心和掌握的问题。通过本章的学习,相信读者会达到这个目标。 10.2 Windows 的多进程程序设计 进程是由代码,数据和该进程中线程可用的其他系统资源,诸如文件、管道和同步对 象组成。每个进程都有一个私有的虚拟地址空间。一个进程至少包括一个线程(称为主线 程) ,并且每个进程都由主线程开始。在运行过程中可以建立新的执行线程。 例如,如果启动了 Microsoft Word 程序,则在内存中就存在了一个以 winword.exe 为 代码的进程,如果不关闭当前的 Word 程序,又通过开始菜单启动了 Microsoft Word ,则又 开始了一个以 winword.exe 为代码的进程。这两个进程的代码虽然一样,但所处的环境也 就是数据或其他系统资源是不同的,它们是两个不同的进程。如果再启动一个记事本程序, 则系统中又多了一个以 notepad.exe 为代码的进程,现在系统中已经存在了 3 个用户进程。 第 10章 多线程与网络编程初步 ·263 · 它们在同一段时间内都是向前推进的。 本节主要介绍如何在 VC 中进行多进程的程序设计,主要介绍如何创建新进程、终止 已有进程并设置进程的优先级。 10.2.1 创建新进程 Windows 是以对象的方式来管理进程的,它由 Win32 子系统来创建和维护,并且可以 由此进程的句柄来进行管理。进程的创建一般是在一个进程的线程中调用函数 CreateProcess( )来创建的,这个进程可以和原进程共享资源(例如句柄和变量) ,而且在 Windows 中,这两个进程不存在的父子关系,即使原进程终止后,这个新进程仍然可以继 续执行。 在介绍创建函数之前,先来看几个相关的数据结构。 1. 数据结构 (1) SECURITY_ATTRIBUTES 结构 该结构存放一个对象的安全描述符并指定是否继承返回的句柄。SECURITY_ ATTRIBUTES 结构定义如下。 typedef struct_SECURITY_ATTRIBUTES{ DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandle; }SECURITY_ATTRIBUTES 其中成员含义如下。 ① nLength :指定该结构大小。
显示全部
相似文档