Sobes.tech
Middle

რა არის deadlock?

sobes.tech AI

პასუხი AI-სგან

Deadlock (შეთანხმებული ბლოკირება) — არის მდგომარეობა მრავალთრაკიან პროგრამაში, სადაც ორი ან მეტი თრაკი უკუღმართად ბლოკავს ერთმანეთს, ელოდება სხვა თრაკის მიერ დაკავებული რესურსების გათავისუფლებას. შედეგად, არც ერთი თრაკი ვერ აგრძელებს მუშაობას.

კლასიკური deadlock-ის მაგალითი:

  • A თრაკი იღებს რესურს 1-ს და ელოდება რესურს 2-ს.
  • B თრაკი იღებს რესურს 2-ს და ელოდება რესურს 1-ს.

ორივე თრაკი უკუღმართად ბლოკირებულია.

Deadlock-ის თავიდან ასაცილებლად გამოიყენება:

  • რესურსების მიღების მკაცრი წესრიგი.
  • დროის გასვლის (timeout) გამოყენება ბლოკირების დროს.
  • არ ბლოკირებადი ალგორითმების გამოყენება.

Java-ს მაგალითი:

synchronized(resource1) {
    synchronized(resource2) {
        // რესურსებთან მუშაობა
    }
}

თუ სხვა თრაკი ცდილობს რესურსების მიღებას საპირისპირო წესით, შეიძლება მოხდეს deadlock.