Junior — Middle
Дар механизмии бандӣ (lock) дар барномасозии бисёрсоҳавӣ чӣ ба таври дақиқ интиқол ё истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар механизмӣ барои баст (lock) дар барномаи бисёртредӣ, объект ё primitives-и синхронӣ истифода мешавад, ки дастрасии истисноиро ба манбаи муштарак таъмин мекунад. Вақте ки як thread бастро мегирад, дигар thread-ҳо, ки кӯшиш мекунанд онро ба даст оранд, то он даме, ки он озод нашудааст, интизор мешаванд.
Яъне, дар "lock" гузошта мешавад ё истифода мешавад:
- Ҳолати баст (завод/озод).
- Механизми интизорӣ (масалан, навбатии thread-ҳо, ки интизор мешаванд, ки озод шавад).
Дар C# калимаи калидии lock бо объекте кор мекунад, ки ҳамчун нишондиҳанда барои баст хизмат мекунад. Мисол:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Код, ки бояд танҳо як thread ҳамзамон иҷро шавад
}
}
Ин ҷо, дар lock, истинод ба объект _lockObj дода мешавад, ки барои идоракунии дастрасӣ истифода мешавад. Дар дохили CLR, ин объект барои назорати ҳолати баст истифода мешавад.