线程与进程之间的关系和区别
线程共享的环境包括:进程代码段,进程的公有数据(利用这些数据,线程很容易实现相互间的通讯),进程打开的文件描述符,信号的处理器进程的当前目录和进程用户ID与进程组ID。
Symbian 的线程一般使用独立的堆空间。这样每个线程可以直接在自己的堆里分配和释放,可以减少同步所引入的开销。当线程退出的时候,系统直接回收线程的堆空间,线程内没有释放的内存空间也不会造成进程内的内存泄漏。
但是两个线程使用共用堆的时候,就必须用 critical section 或者 mutex 进行同步保护。否则程序崩溃时早晚的事。如果你的线程需要在共用堆上无规则的分配和释放任何数量和类型的对象,可以定制一个自己的 allcator,在 allocator 内部使用同步保护。线程直接使用这个 allocator 分配内存就可以了。这相当于实现自己的 malloc,free。但是更建议你重新审查一下自己的系统,因为这种情况大多数是不必要的。经过良好的设计,线程的本地堆应该能够满足大多数对象的需 求。如果有某一类对象需要在共享堆上创建和共享,这种需求是比较合理的,可以在这个类的 new 和 delete 上实现共享保护。
进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。
就绪(Ready)状态
当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
执行(Running)状态
当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
阻塞(Blocked)状态
正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。
2:执行->就绪, 当前运行进程时间片用完;
3:执行->阻塞,当前运行进程等待键盘输入,进入了睡眠状态。
4:阻塞->就绪,I/O操作完成,被中断处理程序唤醒。
2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
1、速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内。
2、资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内。
3、同步问题:线程使用公共变量/内存时需要使用同步机制还是因为他们在同一个地址空间内
。
线程与进程之间的关系和区别相关推荐
- 1线程概念:线程和进程之间的关系,线程间可共享资源,线程间非共享资源,线程的优缺点
1线程概念 1.1什么是线程 1.1.2线程和进程的关系 1.轻量级进程(light-weightprocess),也有PCB,创建线程使用底层函数和进程一样,都是clone. 2.从内核里看进 ...
- java map与set的区别_java 集合(list,set,map)三者之间的关系和区别
原 java 集合(list,set,map)三者之间的关系和区别 一:先上一张关系图,让大家看的更明白. 备注:其中红色部分为实现,其他地方均为接口. 二:各自的特点. List 有序,可重复Arr ...
- 详解窗口句柄,进程ID,进程句柄,窗口与进程之间的关系
窗口句柄: 在Windows或Linux等操作系统下窗口句柄对应着每个窗口的钥匙,例如,你要对某一个窗口进行操作,你必须知道你要操作哪一个窗口,这里就拿Windows做举例,Windows下几乎会创建 ...
- CGI,FastCGI和PHP-FPM之间的关系和区别
CGI,FastCGI和PHP-FPM之间的关系和区别. 什么是CGI? 早期的web server只可以处理简单的静态web文件,但是随着技术的发展出现动态语言如PHP,Python.PHP语言交给 ...
- sql语句和java的关系_java中Statement 与 PreparedStatement接口之间的关系和区别
Statement 和 PreparedStatement之间的关系和区别. 关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使 ...
- 栈,队列和链表三者之间的关系与区别
最近一直在学习算法,刷算法题,但是自从大学毕业以来,数据结构的知识都还给老师了,只会个数组,所以前期刷的题目也都是有关数组的 最近跟着小册重学了一遍数据结构,今天就记录一下栈,队列和链表三者之间的关系 ...
- 线程与进程之间的共享资源
线程和进程之间的共享资源方式 进程之间的共享资源的方式 1.消息队列 2.共享内存 3.管道(有名管道.无名管道) 4.信号 5.套接字 同一个进程的不同线程之间可以共享的资源 1.堆,由于堆是在进程 ...
- 以爬虫为例,单线程,协程,线程,进程之间性能的比较,原来协程可以这么快?
前言 因为刚刚学习到了协程,然后之前也对爬虫有一定的了解,所以打算结合之前学的线程和进程,和协程进行对比,看看它的性能到底有多高,在测试完成后,结果还是不错的!下面就直接上代码了,因为代码逻辑都比较简 ...
- 详解RTK、RTD、SBAS、WAAS、PPP、PPK广域差分等技术之间的关系与区别。
RTK与RTD的区别,一个是载波相位差分.一个是码差分,并且RTK的定位精度要高一些. RTK与PPK的区别,一个是实时提供数据信息,一个是事后处理. WAAS是SBAS系统一个具体的实例,包含在SB ...
最新文章
- GPT2文本生成有问题?这里有些潜在解决思路
- php缺失php5.dll,php5.dll丢失怎么办
- scanf最好与fflush(stdin)配合使用
- 国内下载erlang链接
- dapper使用时性能优化
- android 队列执行动画,Android 重学系列 渲染图层-图元缓冲队列初始化
- 多元线性回归数据集_TensorFlow学习Program1——13.实现一元、多元线性回归(基于房价数据集)...
- 洛谷——P1000 超级玛丽游戏
- python基础01day
- java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
- iphone修改imei_iPhone这些隐藏代码你肯定不知道
- 小学奥林匹克计算机怎么学,小学奥林匹克数学教程1--6年级全套
- 拉格朗日乘数法怎么判断极大极小_用拉格朗日乘数法求出极值后如何判断其是极大值还是极小值?...
- 偶然接触oracle中的变量
- xp系统禁用wmi服务器,windows xp系统启用WMI服务的方法
- CCNA(七)思科路由器基本配置
- 我的世界服务器java启动脚本_教程/服务器启动脚本
- ps切图(2)——简单工具操作(1)
- 用python画皮卡丘画法-用python画一只可爱的皮卡丘实例
- Java Word中的文本、图片替换功能