Sobes.tech
Junior — Middle

Kui palju niite on vaja, et tekiks vastastikune lukustamine (Deadlock)?

sobes.tech AI

Vastus AI-lt

Minimaalne niitide arv, mis on vajalikks deadlocki tekkeks, on kaks.

Deadlock tekib siis, kui kaks või enam niiti hoiab samaaegselt ressursse ja igaüks ootab teise niidi poolt hoitava ressursi vabastamist. Näiteks:

  • Niit A lukustab ressursi 1 ja ootab ressursi 2.
  • Niit B lukustab ressursi 2 ja ootab ressursi 1.

Mõlemad niidid jäävad igaveseks lukustatud, kuna igaüks ootab teise niidi poolt hoitava ressursi vabastamist.

Näide pseudokoodis:

// Niit 1
lock(ressurss1)
wait()
lock(ressurss2)

// Niit 2
lock(ressurss2)
wait()
lock(ressurss1)

Seega, deadlocki jaoks piisab kahest niidist ja kahest ressursist.