做搜狗网站优,学生想搭建网站怎么做,提供商城网站,3d室内设计软件#xff08;1#xff09;什么是死锁#xff1a; 死锁 是指在两个或多个进程的执行时#xff0c;每个进程都持有资源 并 等待其他进程 释放 它所需的资源#xff0c;如果此时所有的进程一直占有资源而不释放#xff0c;就会陷入互相等待的一种僵局状态。 死锁只有同时满足…1什么是死锁 死锁 是指在两个或多个进程的执行时每个进程都持有资源 并 等待其他进程 释放 它所需的资源如果此时所有的进程一直占有资源而不释放就会陷入互相等待的一种僵局状态。 死锁只有同时满足 四个条件时才会发生 互斥也就是 这块资源 只能被一个进程获取 请求并保持进程因为请求资源而阻塞了同时它也不会释放自己的资源 不可剥夺资源只能由持有者 自愿释放不能强行剥夺 循环等待线程 A 已经持有资源 2而想请求资源 1 线程 B 已经获取了资源 1而想请求资源 2这就形成资源请求等待的环形图。 死锁的几种场景 忘记释放锁自己不能再用了其他线程也不能用 重复加同一个锁 往往是在被锁定的代码区内调用函数而那个函数内部也有同一个锁这种错误就比较隐蔽了 多线程多锁抢占锁资源线程之间互相需要对方的锁但是都给不了
2如何避免死锁
通过 破坏死锁的四个必要条件之一 来预防死锁。
破坏 互斥条件使得多个进程可以同时访问 同一个资源。例如在内存中缓存某些资源从而避免频繁的磁盘读写。破坏 不可抢占条件当一个进程所持有的资源被其它进程请求时可以强制该进程放弃资源破坏 请求与保持条件进程在申请新资源之前先释放它所拥有的所有资源等待新资源的分配再重新申请先前持有的资源。破坏循环等待条件通过给资源编号规定每个进程按编号的顺序请求资源释放资源的顺序与请求的顺序相反从而避免循环等待。另外 设置超时时间如果一个进程不能在一定时间内获得所需的所有资源就应该释放已经获取的资源以免造成系统资源的浪费。