自学内容网 自学内容网

线程竞争死锁

1.死锁

1.资源互斥:多线程或进程在同一时间只有一个线程或进程访问该资源

2.占用且请求:一个进程或线程已经有一个或多个资源,同时又请求其他的资源

3.资源不可剥夺:一旦某个线程或进程获得某个资源,就不能被其他进程或线程强制抢夺或剥夺,只有资源的占用才能完成任务后主释放

4.环形等待:进程A在等待进程B持有的资源,进程B又在等待进程C持有的资源,最终进程C又在等待进程A持有的资源,这样就形成了一个循环等待的状态

防止死锁

1.破坏资源互斥:不在控制资源的独占使用,允许多个线程或进程同时访问共享资源

缺点:现实的影响和资金的影响,共享内存很难实现

2.破坏占用且请求:采用预分配的方式,线程或进程在执行前,必须一次性的申请所有的资源,确保执行时不会有新的请求

缺点:系统的资源可能会严重的浪费,有的资源开始时使用,有的资源最后使用

3.破坏资源的不可剥夺性:允许系统强制回收已经被某个线程或进程占用的资源

缺点:比较麻烦,可能会导致剥夺前的工作失效,反复的申请释放资源对cpu,寄存器的占用比较高

4.破坏环形等待:给每个资源分配一个编号,进程或线程在请求资源时,必须按照这个编号的顺序依次请求资源

缺点:资源稳定,当增加删除时,受很大影响


原文地址:https://blog.csdn.net/m0_67677309/article/details/142750756

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!