线程与进程

进程 VS 线程 ? 优缺点 ? 使用场景 ?
       首先进程是 资源分配 的最小单位,线程是 任务调度 的最小单位;进程比线程 更健壮
每个进程拥有 独立 的地址空间,一个进程的崩溃不会影响其他进程、而线程之间 共享 地址
空间,一个线程的崩溃可能影响其他线程或者整个程序;由于线程的调度必须通过 频繁加
来保持同步, 线程的性能比进程低 ;但线程之间切换比进程之间 切换开销 少, 成本低
在需要 频繁 创建销毁 或者需要进行 大量计算 的优先用 线程; 高性能 交易服务器中间
件,如 TUXEDO ,都是主张多进程;总的来说 强相关的处理用线程,弱相关的处理用进
程;多机 分布的用进程, 多核 分布的用线程
进程优点:性能高(每个子进程都有 2GB 地址空间和相关资源,总体能够达到的性能上限
非常大)、进程间相互独立,一个进程崩溃了不会影响其他进程、通过增加 CPU ,就可以
容易扩充性能;、可以尽量减少线程加锁 / 解锁的影响,极大提高性能,就算是线程运行的
模块算法效率低也没关系;
缺点:成本高,开销大;逻辑控制复杂,需要和主程序交互;需要跨进程边界,如果有大
数据量传送,就不太好,适合小数据量传送、密集运算
线程优点:成本低,开销小;程序逻辑和控制方式简单;创建速度快,方便高效的数据共
( 个线程的数据可以直接为其它线程所用 ) ;线程方式消耗的总资源比进程方式好;
缺点:性能低:每个线程与主程序共用地址空间,受限于 2GB 地址空间;线程之间的同步
和加锁控制比较麻烦;一个线程的崩溃可能影响到整个程序的稳定性; 到达一定的线程数
程度后,即使再增加 CPU 也无法提高性能。

 

线程的同步方式有哪些 ? 及作用 ?
线程同步作用: 线程的资源保护机制
互斥锁、条件变量、信号量
互斥锁: 互斥锁是一种简单的加锁的方法来 控制对共享资源的访问 一旦获取,就会上
锁,且只能由该线程解锁,期间,其他线程无法获取
优点:使用简单
缺点:
重复锁定和解锁,每次都会检查共享数据结构,浪费时间和资源;
繁忙查询的效率非常低
信号量: 互斥锁使用对同一个资源的互斥的方式达到线程同步的目的,信号量 可以同
步多个资源以达到线程同步 pv 操作)
优点:信号量允许多个线程同时进入临界区(互斥锁只允许一个线程进入临界区)
条件变量: 当线程在等待某些满足条件时使线程进入睡眠状态,一旦条件满足,就唤醒,
这样不会占用宝贵的互斥对象锁,实现高效,从而 实现线程同 步。
优点: 解决互斥锁浪费资源且效率低的缺点。( 条件变量需要在互斥锁的配合下才能工
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值