进程,线程,多线程概念
2009-08-24 15:39
253 查看
一概念:
进程:一个进程通常定义为程序的一个实例。在Win32中, 进程占据4GB的地址空间。Win32进程是没有活力的。这就是说,一个Win32进程并不执行什么指令,它只是占据着4GB的地址空间,此空间中有应用程序EXE文件的 代码和数据。EXE需要的任意DLL也将它们的代码和数据装入到进程的地址空间。除了地址空间,进程还占有某些资源,比如文件、动态内存分配和线程。当进 程终止时,在它生命期中创建的各种资源将被清除。为了让进程完成一些工作,进程必须 至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可以包含几个线程, 它们可以同时执行进程的地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。
线程:是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。
多线程:每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进 程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也 较为广泛。
二:多线程的优缺点
1:多线程优点
1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;
2)当前没有进行处理的任务时可以将处理器时间让给其它任务;
3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;
4)可以随时停止任务;
5)可以分别设置各个任务的优先级以优化性能。
2:多线程缺点
1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。
2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。
3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
4)对公有变量的同时读或写。当多个线程需要对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修 改;另外 ,当公用变量的读写操作是非原子性时,在不同的机器上,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误 是程序员无法预知的。
3:多线程使用场合
1)耗时或大量占用处理器的任务阻塞用户界面操作;
2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。
进程:一个进程通常定义为程序的一个实例。在Win32中, 进程占据4GB的地址空间。Win32进程是没有活力的。这就是说,一个Win32进程并不执行什么指令,它只是占据着4GB的地址空间,此空间中有应用程序EXE文件的 代码和数据。EXE需要的任意DLL也将它们的代码和数据装入到进程的地址空间。除了地址空间,进程还占有某些资源,比如文件、动态内存分配和线程。当进 程终止时,在它生命期中创建的各种资源将被清除。为了让进程完成一些工作,进程必须 至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可以包含几个线程, 它们可以同时执行进程的地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。
线程:是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。
多线程:每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进 程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也 较为广泛。
二:多线程的优缺点
1:多线程优点
1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;
2)当前没有进行处理的任务时可以将处理器时间让给其它任务;
3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;
4)可以随时停止任务;
5)可以分别设置各个任务的优先级以优化性能。
2:多线程缺点
1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。
2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。
3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
4)对公有变量的同时读或写。当多个线程需要对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修 改;另外 ,当公用变量的读写操作是非原子性时,在不同的机器上,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误 是程序员无法预知的。
3:多线程使用场合
1)耗时或大量占用处理器的任务阻塞用户界面操作;
2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。
相关文章推荐
- [疯狂Java]多线程:进程和线程的概念
- 多线程的概念 程序,进程,线程
- java学习5---Java 的多线程,程序、进程和线程的概念
- 多线程之基础篇01:进程与线程的基本概念
- 多线程系列一 进程和线程基本概念
- C++进程、线程、多线程概念及线程的优缺点
- 【日积月累】关于进程 线程和一些常见的多线程概念
- Java第七课 Java的多线程程序进程和线程的概念,实现多线程的两种方式,线程同步的原理,线程的死锁,运用wait和notify来实现producer - consumer关系,线程终止的两种情况。
- 进程、线程与多线程概念详解
- java多线程之线程,进程和Synchronized概念初解
- 多线程 线程 进程概念
- 【windows编程--进程与线程】多线程的概念
- Java多线程学习总结——线程与进程的概念、区别与联系
- Java(线程的概念)(线程和进程的比较)(多线程的优点)
- C#中多线程自我折腾之一-进程,线程的基本概念
- 多线程(一) 进程和线程的基本概念
- 线程进程Java多线程(一)、理解进程与多线程的概念及关系
- 多线程(1)------- 程序、进程、线程的概念
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- java 孙鑫 第五课 Java 的多线程,程序、进程和线程的概念