C# 中的死锁和饥饿
当线程锁定某一资源而同时有另一线程正在请求该资源时,就会发生死锁。这个问题在多处理系统中频繁出现。
当两个或多个线程等待属于另一个线程的资源时,死锁就会发生。下面是一个示例 -
| 线程一 | 线程二 |
|---|---|
| 获取锁 P | 获取锁 Q |
| 请求锁 Q | 请求锁 P |
线程一无法获得锁 Q 因为它属于线程二。同样的,线程二也无法获得锁 P,因为它最初归属于线程一。
死锁还可以是三方死锁,如果出现三个线程和三个锁,则会发生死锁。同样的,它可以发生在四方、五方和其他死锁中。
饥饿是在多线程应用程序中对一个或多个可运行线程的永久性阻塞。
广告
数据结构
网络连接
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 程序设计
C++
C#
MongoDB
MySQL
Javascript
PHP