Sobes.tech
Junior — Middle

შეგიძლიათ ჩამოთვალოთ სტანდარტული ბიბლიოთეკის მიერ მოწოდებული ძირითადი სინქრონიზაციის primitives?

sobes.tech AI

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

C#-ის სტანდარტულ ბიბლიოთეკაში (სახელმწიფო სახელმძღვანელო სისტემაში System.Threading) ხელმისაწვდომია შემდეგი ძირითადი სინქრონიზაციის primitives:

  • lock (Monitor) — უზრუნველყოფს ექსკლუზიურ წვდომას რესურსზე, ბლოკავს კოდის მონაკვეთს.
  • Mutex — მრავალპროცესიანი mutex, გამოიყენება პროცესებს შორის სინქრონიზაციისთვის.
  • Semaphore და SemaphoreSlim — შეზღუდავენ ერთდროულად რესურსზე წვდომას მძლავრობით.
  • AutoResetEvent და ManualResetEvent — მოვლენები სიგნალიზაციისთვის შორის მძლავრობით.
  • ReaderWriterLockSlim — საშუალებას აძლევს რამდენიმე მძლავრობას ერთდროულად წაიკითხოს რესურსი, მაგრამ ბლოკავს დაწერას.
  • SpinLock — მსუბუქი primitive მოკლე ბლოკირებისთვის, კონტექსტის გადართვის გარეშე.

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

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // კოდი, რომელიც უნდა შესრულდეს მხოლოდ ერთ მძლავრობით ერთდროულად
    }
}