1、 1 浅谈(windows)线程 1 1,前言,前言 随着微型计算机的越来越兴盛,对进程的资源掌控,已经不再适用于微型计 算机的资源分配模式,线程的出现也就成为了必然。所以说线程是为了提高操作 系统的执行效率而引入的,它是进程的一段程序的基本调度单位。进程具有动态 性、并发性等特点。线程可以合理的分配进程从 CPU 占用的资源,并与其他线程 共享。每个程序最少有一个进程,每个进程最少有一个线程。 为了对线程进行深一步的了解。 我在这个实验报告中对线程做了一个浅显的 分析。除了对线程的一些基本概念,特点, ,线程同步,已经多线程等等做了一 个详细的解释。在研究线程的过程中肯定少不了进程的存在。所
2、以在最后对线程 和进行做了一个比对。更深层的了解一些有关的信息。 2 2,2,什么是线程?什么是线程? 线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的 能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中 必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的 其他的线程共享进程所拥有的全部资源. 线程也可以称为轻型进程 (Light Weight Process,LWP)。 它是一种非常“节俭“的多任务操作方式。在 Linux 系统下,启动一个新的进 程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段 和数据段
3、, 这是一种“昂贵“的多任务工作方式。 而运行于一个进程中的多个线程, 它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空 间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远 远小于进程间切换所需要的时间。当然,在具体的系统上,这个数据可能会有较 大的区别; 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进 程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者 是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下 文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由 操作系统负责多个
4、线程的调度和执行。 2.1,什么是多线程? 多线程是为了使得多个线程并行的工作以完成多项任务, 以提高系统 的效率。线程是在同一时间需要完成多项任务的时候被实现的。 3,3,线程的特点线程的特点 1)轻型实体 线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立 运行的资源, 比如, 在每个线程中都应具有一个用于控制线程运行的线程控制块, 用于指示被执行指令序列的程序计数器、保留程序变量、少数状态参数和返回地 址等的一组寄存器和堆栈。 2)独立调度和分派的基本单位 在多线程 OS 中,线程是能独立运行的基本单位,因而也是独立调度和分派 的基本单位。由于线程很“轻” ,故线程的切换
5、非常迅速且开销小(在同一进程 中的) 。 3)可并发执行 在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有 线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了 处理机与外围设备并行工作的能力。 4)共享进程资源 3 在同一进程中的各个线程, 都可以共享该进程所拥有的资源, 这首先表现在: 所有线程都具有相同的地址空间(进程的地址空间) ,这意味着,线程可以访问 该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时 器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互 相通信不必调用内核。 4,4,什么是线程同步?什么是线
6、程同步? 同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说“同” 字从字面上容易理解为一起动作,其实不是, “同”字应是指协同、协助、互相 配合。如进程、线程同步,可理解为进程或线程 A 和 B 一块配合,A 执行到一定 程度时要依靠 B 的某个结果,于是停下来,示意 B 运行;B 依言执行,再将结果 给 A;A 再继续操作。所谓同步,就是在发出一个功能调用时,在没有得到结果 之前,该调用就不返回,同时其它线程也不能调用这个方法。按照这个定义,其 实绝大多数函数都是同步调用(例如 sin, isdigit 等) 。但是一般而言,我们在 说同步、 异步的时候, 特指那些需要其他部件协作或者需要一定时间完成的任务。 例如 Window API 函数 SendMessage。该函数发送一个消息给某个窗口,在对方 处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理 函数所返回的 LRESULT 值返回给调用者。在多线程编程里面,一些敏感数据不允 许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多 有一个线程访问,以保证数据的完整性。