C# 中的死锁和饥饿


当线程锁定某一资源而同时有另一线程正在请求该资源时,就会发生死锁。这个问题在多处理系统中频繁出现。

当两个或多个线程等待属于另一个线程的资源时,死锁就会发生。下面是一个示例 -

线程一线程二
获取锁 P获取锁 Q
请求锁 Q请求锁 P

线程一无法获得锁 Q 因为它属于线程二。同样的,线程二也无法获得锁 P,因为它最初归属于线程一。

死锁还可以是三方死锁,如果出现三个线程和三个锁,则会发生死锁。同样的,它可以发生在四方、五方和其他死锁中。

饥饿是在多线程应用程序中对一个或多个可运行线程的永久性阻塞。

更新日期: 2020 年 6 月 22 日

1K+ 浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.