套接字: 这是一种更为一般得进程间通信机制 , 它可用于网络中不同机器之间的进程间通信 , 应用非常广泛 。
几种方式的比较:
管道:速度慢、容量有限
消息队列:容量收到系统限制 , 且要注意第一次读的时候 , 要考虑上一次没有读完数据的问题 。
信号量:不能传递复杂信息 , 只能用来同步 。
共享内存:能够很容易控制容量 , 速度快 , 但要保持同步 , 比如一个进程在写的时候 , 另一个进程要注意读写的问题 , 相当于线程中的线程安全 。
线程间通信
(1)同步
多个线程通过synchronized通讯 , 类似于共享内存
(2)while轮询
线程A不断改变条件 , 线程B不断查看条件是否满足需求(比方说=5) , 从而实现通讯 。
效率不高 , 因为B一直在查看 , 没做别的
(3)wait/notify
进入阻塞 , 而不是像轮询一样一直占用CPU资源
(4)管道通信
通过管道 , 将一个线程的消息发送个另一个线程
什么是死锁?死锁产生的条件?
1). 死锁的概念
在两个或者多个并发进程中 , 如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源 , 在未改变这种状态之前都不能向前推进 , 称这一组进程产生了死锁 。 通俗的讲 , 就是两个或多个进程无限期的阻塞、相互等待的一种状态 。
2). 死锁产生的四个必要条件
互斥:至少有一个资源必须属于非共享模式 , 即一次只能被一个进程使用;若其他申请使用该资源 , 那么申请进程必须等到该资源被释放为止;
占有并等待:一个进程必须占有至少一个资源 , 并等待另一个资源 , 而该资源为其他进程所占有;
非抢占:进程不能被抢占 , 即资源只能被进程在完成任务后自愿释放
循环等待:若干进程之间形成一种头尾相接的环形等待资源关系
3). 死锁的处理基本策略和常用方法
解决死锁的基本方法主要有 预防死锁、避免死锁、检测死锁、解除死锁 、鸵鸟策略 等 。
(1). 死锁预防
死锁预防的基本思想是 只要确保死锁发生的四个必要条件中至少有一个不成立 , 就能预防死锁的发生 , 具体方法包括:
打破互斥条件:允许进程同时访问某些资源 。 但是 , 有些资源是不能被多个进程所共享的 , 这是由资源本身属性所决定的 , 因此 , 这种办法通常并无实用价值 。
打破占有并等待条件:可以实行资源预先分配策略(进程在运行前一次性向系统申请它所需要的全部资源 , 若所需全部资源得不到满足 , 则不分配任何资源 , 此进程暂不运行;只有当系统能满足当前进程所需的全部资源时 , 才一次性将所申请资源全部分配给该线程)或者只允许进程在没有占用资源时才可以申请资源(一个进程可申请一些资源并使用它们 , 但是在当前进程申请更多资源之前 , 它必须全部释放当前所占有的资源) 。 但是这种策略也存在一些缺点:在很多情况下 , 无法预知一个进程执行前所需的全部资源 , 因为进程是动态执行的 , 不可预知的;同时 , 会降低资源利用率 , 导致降低了进程的并发性 。
打破非抢占条件:允许进程强行从占有者哪里夺取某些资源 。 也就是说 , 但一个进程占有了一部分资源 , 在其申请新的资源且得不到满足时 , 它必须释放所有占有的资源以便让其它线程使用 。 这种预防死锁的方式实现起来困难 , 会降低系统性能 。
- QQ飞车小橘子头像 qq飞车小橘子禁图封面
- 乳胶床垫有正反面区分吗 乳胶床垫有正反面区分吗知乎
- 台式电脑怎么进入bios 电脑怎么进入bios界面
- 韩束抚纹面霜 韩束黑金抚纹修护丝绒霜好吗怎么用
- 韩束抚纹面霜 韩束黑金抚纹修护丝绒霜好用吗?
- 床对着窗户风水好不好 床下面空的风水好吗
- 圆形铣刀片 铣刀片规格大全
- 聚划算的化妆品都是正品吗 聚划算里面的东西是正品吗
- 坟墓后面修公路好不好 坟前庙后是风水宝地
- 换牙过程 换乳牙是先换上面还是下面
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
