Sobes.tech
Junior — Middle

როგორ მართავენ სისტემები სიტუაციას, როდესაც რამდენიმე ნაკადი ერთდროულად მიმართავს საერთო ცვლადს ან მდგომარეობას?

sobes.tech AI

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

როდესაც რამდენიმე ნაკადი ერთდროულად მიმართავს საერთო ცვლადს ან მდგომარეობას, წარმოიქმნება რბოლა (race condition). იმისათვის, რომ თავიდან აიცილოთ არასწორი მონაცემები და უზრუნველყოთ სისწორე, გამოიყენება სინქრონიზაციის მექანიზმები:

  • ლოკები (lock, mutex) — აძლევენ ერთ ნაკადს ექსკლუზიურ უფლებას რესურსზე, სხვა ელოდება.
  • მონიტორები (Monitor.Enter/Exit C#-ში) — უფრო მოქნილი ბლოკირების მექანიზმი.
  • C#-ში lock საკვანძო სიტყვა — გამარტივებული სინტაქსი მონიტორებისთვის.
  • ატომური ოპერაციები (Interlocked) — მარტივი ოპერაციებისათვის, სრული ბლოკირების გარეშე.
  • კონკურენტ კოლექციები — ნაკადების უსაფრთხო მონაცემთა სტრუქტურები.

მაგალითი lock-ის გამოყენებით C#-ში:

private readonly object _sync = new object();
private int _counter = 0;

public void Increment()
{
    lock(_sync)
    {
        _counter++;
    }
}

ეს მიდგომა გარანტიას იძლევა, რომ მხოლოდ ერთი ნაკადი შეცვლის ცვლადს ერთდროულად.