Linux多线程 基本概念
来源:互联网 发布:世纪证券软件下载 编辑:程序博客网 时间:2024/06/10 14:09
1、基本概念
线程是进程的一个执行流,是CPU调度的基本单位,是CPU中能独立运行的最小单位。也可以称为轻量级进程。
进程是分配资源的最小单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
2、选择多线程而不是多进程的理由?
(1)线程启动时间远小于进程启动时间。启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式,而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据。
(2)线程间切换时间远小于进程间切换的时间。
(3)线程开销远小于进程开销。总的说来,一个进程的开销大约是一个线程开销的30倍左右。
(4)线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方。
此外,多线程程序作为一种多任务、并发的工作方式,当然有以下的优点:
1) 提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(time consuming)置于一个新的线程,可以避免这种尴尬的情况。
2) 使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
3) 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。
3、进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
- Linux 多线程,基本概念
- Linux多线程,基本概念
- 1、Linux多线程,基本概念
- Linux多线程,基本概念
- linux多线程----基本概念
- 1、Linux多线程,基本概念
- Linux多线程,基本概念
- Linux多线程 基本概念
- Linux 多线程-基本概念
- Linux 多线程的基本概念
- linux多线程学习笔记一---基本概念
- Linux多线程基础学习(一)基本概念
- 多线程基本概念
- 多线程基本概念
- 多线程基本概念
- 多线程基本概念
- 多线程:基本概念
- 多线程基本概念
- oracle截取最后一个字符
- 替换空格
- 快速排序
- 深入浅出TCP之send和recv
- 再超越去看正脸
- Linux多线程 基本概念
- 京东再不上市就老了
- Bing必应(Yahoo雅虎)搜索引擎登录网站 - Blog透视镜
- 装饰者模式
- Android开发之利用ViewPager实现导航页和滑动标签页效果
- C#0007--带历史信息的菜单
- 萨拉黑油金秀贤
- 1:新浪云SAE搭建微信公众平台开发-java
- Boltzmann machine