zoukankan      html  css  js  c++  java
  • 进程/线程死锁产生的原因以及如何避免死锁

    线程死锁产生的必要条件:

    1)互斥条件:一个资源每次只能被一个进程使用。 

    2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 

    3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 

    4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

    如何避免死锁,这点我觉得Erlang模型值得参考。在编程过程中,有一些避免死锁的经验:

    (1) 等待某个资源时,使用超时机制(例如Erlang中的receive可以加一个超时);

    (2) 采用消息通信的通信机制,而不是共享内存的通信机制(例如Erlang中进程和进程之间一般可以通过发送消息来通信)。

  • 相关阅读:
    合并果子
    在线最小值问题
    沙盒机制(sandBox)
    简单地址簿?
    浅拷贝、深拷贝
    NSFileManager、NSFileHandle
    NSDate、NSCalendar、NSDateFormatter
    归档
    类目、延展、协议
    动态类型
  • 原文地址:https://www.cnblogs.com/myPersonalTailor/p/4967921.html
Copyright © 2011-2022 走看看