Gast
#545463
Kann mir jemand erklären was ein Deadlock ist, wie er entsteht, und wie man ihn vermeiden kann?
|
Anzeige
|
Thread und Deadlock
Gast
#545463
Kann mir jemand erklären was ein Deadlock ist, wie er entsteht, und wie man ihn vermeiden kann?
Gast
#545468
Sollte für den Anfang genügen: http://olli.informatik.uni-oldenburg.de/Deadlock/Html/lernkonzept.html Aber wieso interessiert dich das?
Gast
#545552
Danke für den link, scheint so als würde es meine Fragen beantworten. Werd mich aber ein ander mal mit dem Text vergnügen. Dieselbe Frage wurde mir mal bei einem Vorstellungsgespräch gestellt. Konnte darauf nur antworten das bei einem Deadlock ein wartender Thread auf ein Ereignis wartet. Dieses Ereignis aber aufgrund eines ungültigen Zustandes nie auftritt, und das die Programmausführung an dieser Stelle hängenbleibt. Aber wie es zu so einer Situation kommt, ist mir immer noch nicht ganz klar. Aussderdem könnte so ein Deadlock doch auch bei der hardwarenahen Programmierung ein Problem sein. Da man hier ja auch mit "parallen" Prozessen arbeite muss (Interupts).
Gast
#545581
Nehmen wir an, ein Thread muß, um seine Arbeit zu verrichten, zwei Ressourcen A und B belegen. Ein zweiter Thread muß dies ebenfalls. Der Ablauf bei einem Deadlock könnte z.B. so aussehen: Thread 1 belegt Ressource A (z.B. Mutex-Lock) -> Scheduler unterbricht und führt Thread 2 aus Thread 2 belegt Ressource B Thread 2 will A belegen, ist aber schon belegt -> Block -> Scheduler übergibt wieder an Thread 1 Thread 1 will Ressource A belegen, ist aber schon belegt -> Block Wenn keiner der Threads seine Ressource freigibt, bleiben beide für immer stehen. Das ist ein Deadlock. Rolf Magnus wrote: > Thread 1 will Ressource A belegen, ist aber schon belegt -> Block > Besser ist: Thread 1 will Ressource B belegen (A hat er ja schon), ist aber schon belegt -> Block Ein Thread wartet auf einen anderen, der wiederum auf den ersten Thread wartet. Es muß sich dabei nicht unbedingt um Ressourcen handeln, auch die Thread-Terminierung eignet sich ausgezeichnet für solcherlei Unbill.
Gast
#546169
> Besser ist: Thread 1 will Ressource B belegen (A hat er ja schon),
Ups, natürlich. War ein Leichtsinnsfehler.
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|