Junior
Care este scopul cuvântului cheie lock în C#?
sobes.tech AI
Răspuns de la AI
Cuvântul cheie lock este utilizat pentru a asigura siguranța thread-urilor prin crearea unei secțiuni critice.
Obiectivele principale:
- Blocarea accesului: Asigură că doar un thread poate executa codul din interiorul blocului
lockîntr-un moment dat. - Protecția resurselor comune: Previne condițiile de cursă atunci când mai multe thread-uri accesează simultan date sau resurse comune, cum ar fi câmpurile clasei, colecțiile etc.
- Sincronizarea thread-urilor: Este folosit pentru a organiza ordinea de executare a operațiilor în scenarii multi-thread.
Exemplu de utilizare:
private static readonly object _lockObject = new object(); // Obiect pentru blocare
public void UpdateCounter()
{
// Începutul secțiunii critice
lock (_lockObject)
{
// Codul din interiorul acestui bloc poate fi executat doar de un singur thread simultan
counter++;
}
// Sfârșitul secțiunii critice
}
Este important să folosiți un obiect specializat (_lockObject în exemplu) pentru blocare, și nu this sau typeof(TypeName), pentru a evita potențiale probleme de blocare mutuală. Se recomandă utilizarea obiectelor de tip object sau System.Threading.ReaderWriterLockSlim pentru scenarii mai complexe.