线程相对于进程的优势

原创 2012年03月27日 16:07:03

fork是昂贵的。fork要把父进程的内存映像拷贝到子进程,并在子进程中复制所有描述字,如此等等。当今的实现使用称为写时拷贝(copy on write)的技术,用以避免在子进程切实需要自己的拷贝之前把父进程的数据空间拷贝到子进程。然而,即便有这样的优化措施,fork仍然是昂贵的。

fork返回之后父子进程之间信息的传递需要进程间通信(IPC)机制。调用fork之前父进程向尚未存在的子进程传递信息相当容易,因为子进程将从父进程数据空间及所有描述字的一个拷贝开始运行。然而从子进程往父进程返回信息却比较费力。


线程有助于解决这两个问题。线程提供一种并发能力,可以在一个进程中的同一时刻运行多个流。每个线程都有自己的硬件寄存器和堆栈。一个进程中的所有线程共享全部虚拟空间地址、所有文件描述、信号行为和其他的进程资源。
线程有时称为轻权进程(light weight process),因为线程比进程“权重轻些”。也就是说线程的创建可能比进程的创建快10~100倍。

同一进程内的所有线程共享相同的全局内存。这使得线程之间易于共享信息,然而伴随这样的简易性而来的却是同步(synchronization)问题。


同一进程内的所有线程共享的:
全局变量
进程指令
大多数数据
打开的文件(即描述字)
信号处理函数和信号处置
当前工作目录
用户ID和组ID

每个线程各自的:
线程ID
寄存器集合,包括程序计数器和栈指针
栈(用于存放局部变量和返回地址)
errno


Control的Invoke和BeginInvoke 是相对于支线线程

近日,被Control的Invoke和BeginInvoke搞的头大,就查了些相关的资料,整理如下。感谢这篇文章对我的理解Invoke和BeginInvoke的真正含义 。 (一)Control的I...

mybatis相对于ibatis的优势

2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被myba...

epoll 相对于select的优势

epoll 相对于select的优势 分类:LinuxKnowHow  (819)  (0)  举报  收藏 这个问题至今才去查,是因为我需要用的地方真的不是很多,学...

LaTeX 相对于 Word 有什么优势?

sjhstone ,本科EE在读 vczh 等 276 人赞同 【Word公式进阶请往下翻】 有人还写过论文,参见PLOS ONE: An Efficiency Comparis...

Android 属性动画(一):Animator属性动画相对于Animation的优势

前面的博客 Android 动画效果(一): 四种动画基础(Alpha、Translate、Rotate、Scale) 和 Android 动画效果(二):四种基础动画的 **动态设置、动画监听、组合...

Spark相对于MapReduce的优势

Spark是类Hadoop MapReduce的通用的并行计算框架,但不同于MapReduce的是Job中间输出和结果可以保存在内存中,也就是说spark是基于内存计算的,从而不再需要读写HDFS,因...

C#脚本实践(六): 脚本相对于C++的优势

在实际使用脚本之前, 根本不知道为什么要用脚本, 直到我膝盖中了一箭在之前我也问过很多人, C++写逻辑什么的也行啊, 为什么要引入另一种语言呢? 听得最多的理由是:不用编译的确,  C++的编译速度...

为什么奇艺要把 iPad 客户端上的 MP4 流改为 TS 流呢?TS 相对于 MP4 有什么优势呢?

为什么奇艺要把 iPad 客户端上的 MP4 流改为 TS 流呢?TS 相对于 MP4 有什么优势呢? 1 条评论  分享 按...

Hbase相对于Mysql的优势

Hadoop是离线计算平台,其中包括分布式文件系统(HDFS)和分布式计算(MapReduce),这本身是无法对响应时间做保证的。但是目前在Hadoop之上的生态系统越来越完善,其中HBase就是支持...

epoll 相对于select的优势

这个问题至今才去查,是因为我需要用的地方真的不是很多,学习了那么多年,不知道自己究竟学了什么,觉得自己的优势就是针对特定知识点都熟悉点,一整套的软件架构没有搞过。再总结一点select的不足点:epo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程相对于进程的优势
举报原因:
原因补充:

(最多只允许输入30个字)