Junior — Middle
Čo presne sa prenáša alebo používa v mechanizme zámku (lock) v viacvláknovom programovaní?
sobes.tech AI
Odpoveď od AI
V mechanizme zámku (lock) v viacvláknovom programovaní sa používa objekt alebo primitív synchronizácie, ktorý zabezpečuje výlučný prístup ku zdieľanému zdroju. Keď vlákno získa zámok, ostatné vlákna, ktoré sa o ten istý zámok pokúšajú, budú čakať, kým nebude uvoľnený.
Inými slovami, pod "lock" sa odovzdáva alebo používa:
- Stav zámku (obsadený/voľný).
- Mechanizmus čakania (napríklad fronta vlákien čakajúcich na uvoľnenie).
V C# funguje kľúčové slovo lock s objektom, ktorý slúži ako značka zámku. Príklad:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Kód, ktorý má byť vykonaný iba jedným vláknom naraz
}
}
Tu sa v lock odovzdáva referencia na objekt _lockObj, ktorý sa používa na riadenie prístupu. Interné CLR používa tento objekt na kontrolu stavu zámku.