多线程编程技术详解-第一讲ppt课件.ppt

多线程编程技术详解-第一讲ppt课件.ppt

ID:59320289

大小:845.50 KB

页数:51页

时间:2020-09-20

多线程编程技术详解-第一讲ppt课件.ppt_第1页
多线程编程技术详解-第一讲ppt课件.ppt_第2页
多线程编程技术详解-第一讲ppt课件.ppt_第3页
多线程编程技术详解-第一讲ppt课件.ppt_第4页
多线程编程技术详解-第一讲ppt课件.ppt_第5页
资源描述:

《多线程编程技术详解-第一讲ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《多线程编程技术详解》第一讲:线程基础主讲人:步磊峰UIPower3D界面引擎负责人第一节:进程进程的概念进程是指在系统中正在运行的一个应用程序,在传统的操作系统中,是资源的分配单位又是高度运行的单位。在现代操作系统中,进程是资源的分配单位,一个进程通常定义为程序的一个实例。在32位Windows中,进程占据4GB(2的32次方)的虚拟地址空间。第一节:进程进程的组成部分进程由两个部分组成:操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方地址空间。它包含所有可执行模块或DLL模块的代码和数

2、据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间第一节:进程进程是不活泼的进程从来不执行任何东西,它只是线程的容器。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。第一节:进程进程中的线程单个进程可能包含若干个线程,这些线程都“同时”执行进程地址空间中的代码。每个进程至少拥有一个线程,来执行进程的地址空间中的代码。当创建一个进程时,操作系统会自动创建这个进程的第一个线程,称为主线程。此后,该线程可以创建其他的线程第二节:线程线程的概念线程是指进程中执行运行的

3、最小单位,即处理机调度的基本单位。和进程相比,进程是一项任务,线程是独立子任务,可由不同处理器分别来完成,提高了进程运行速度。线程的组成部分线程由两部分组成:a)线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。b)线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量第二节:线程线程的概念线程是指进程中执行运行的最小单位,即处理机调度的基本单位。和进程相比,进程是一项任务,线程是独立子任务,可由不同处理器分别来完成,提高了进程运行速度。线程的组成部分线程由两部分组成:a)线

4、程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。b)线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量第二节:线程何时创建线程线程示例比如:1)电子表格软件可以在后台执行重新计算。2)Web浏览器可以在后台与其服务器进行通信。在当前的结果显示出来之前,用户可以调整浏览器窗口的大小,或者转到其他网站)。3)可以使用操作系统附带的磁盘碎片整理程序,它是在系统空闲的时候,在后台运行这个实用程序并进行磁盘碎片整理第二节:线程何时不应该创建线程线程示例比如:1)开发一个字处理程序,

5、并且希望允许打印函数在它自己的线程中运行第三节:线程的创建CreateThreadHANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,DWORDdwStackSize,LPTHREAD_START_ROUTINElpStartAddress,LPVOIDlpParameter,DWORDdwCreationFlags,LPDWORDlpThreadId);lpThreadAttributes指向SECURITY_ATTRIBUTES型态的结构的指针,这个参

6、数通常设置为NULLdwStackSize设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小第三节:线程的创建CreateThreadlpStartAddress,指向线程函数的指针,函数名称没有限制,但是必须以下列形式声明:DWORDWINAPIThreadProc(LPVOIDlpParam),格式不正确将无法调用成功lpParameter,向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULLdwCreat

7、ionFlags,线程标志,可取值如下(1)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,(2)0:表示创建后立即激活。lpThreadIdlpThreadId:保存新线程的id。第三节:线程的创建注意事项如果你不需要线程ID,lpThreadId参数可以被设为NULL,但这只在WindowsNT中才行得通,Windows95中就不行。如果你要写一个程序可以在Windows95中运行,不要把lpThreadId参数设为NULL。调用CreateThread时,系统会创建一个线程内核对象,这

8、个线程内核对象不是线程本身,而是一个较小的数据结构,操作系统用这个结构来管理线程,可以把线程内核对象想象为一个由线程统计信息构成的小型数据结构。第四节:线程的终止线程的终止线程可以通过以下3种方法来终止运行线程函数返回(这是强烈推荐的)。线程通过调用ExitThread函数“杀死”自己(要避免使用这种方法)同一个进程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。