Junior — Middle
Какво точно се предава или използва в механизма за заключване (lock) в многопоточната програмиране?
sobes.tech AI
Отговор от AI
В механизма за блокиране (lock) в многопоточната програмиране се използва обект или примитив за синхронизация, който осигурява изключителен достъп до споделен ресурс. Когато нишка придобие блокировката, други нишки, които се опитват да я придобият, ще чакат, докато тя не бъде освободена.
Тоест, под "lock" се предава или използва:
- Статусът на блокировката (заета/свободна).
- Механизмът за изчакване (например, опашка от нишки, чакащи освобождаване).
В C# ключовата дума lock работи с обект, който служи като маркер за блокировка. Пример:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Код, който трябва да се изпълнява само от една нишка едновременно
}
}
Тук, в lock, се предава препратка към обекта _lockObj, който се използва за управление на достъпа. Вътрешно, CLR използва този обект, за да контролира състоянието на блокировката.