Ein Deadlock tritt auf, wenn eine Ressource von einem Thread gesperrt wird und gleichzeitig ein anderer Thread die Ressource benötigt. Dieses Problem tritt häufig in Multiprozessorsystemen auf.
Dieses Problem kann auftreten, wenn zwei oder mehr Threads auf eine Ressource warten, die zu einem anderen Thread gehört. Hier ist ein Beispiel –
Thread eins | Thread zwei |
---|---|
Sperre P erhalten | Sperre Q erhalten | tr>
Sperre Q anfordern | Sperre P anfordern |
Thread eins Nr Sperre Q wird erworben, da sie zu Thread zwei gehört. Ebenso erhält Thread zwei keine Sperre P, da sein ursprünglicher Besitzer Thread eins war.
Ein Deadlock kann auch ein Drei-Wege-Deadlock sein, der auftritt, wenn drei Threads und drei Sperren gemeinsam sind. Ebenso können Vier-Wege-, Fünf-Wege- und andere Deadlocks auftreten.
Starvation ist das dauerhafte Blockieren eines oder mehrerer ausführbarer Threads in einer Multithread-Anwendung.
Das obige ist der detaillierte Inhalt vonDeadlock und Hunger in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!