Middle
Qu'est-ce que les lock-ers en C#?
sobes.tech IA
Réponse de l'IA
lock en C# est utilisé pour assurer un accès exclusif à un bloc de code. Il garantit qu'un seul thread peut exécuter ce bloc à la fois, évitant ainsi les conditions de course (race conditions) lors de la manipulation de ressources partagées.
private static readonly object _lockObject = new object(); // Objet pour la synchronisation
public void AccessSharedResource()
{
lock (_lockObject) // Verrouillage de l'objet
{
// Section critique : code nécessitant un accès exclusif
// Travail avec une ressource partagée (par exemple, modification d'une variable)
} // Le verrouillage est libéré automatiquement à la sortie du bloc
}
Alternatives et concepts liés :
Monitor: Fournit un contrôle plus granulaire sur la synchronisation, y compris les méthodes Wait, Pulse, PulseAll.Mutex: Utilisé pour la synchronisation entre processus, ainsi qu'entre threads dans un même processus.Semaphore/SemaphoreSlim: Limite le nombre de threads pouvant accéder simultanément à une ressource.ReaderWriterLockSlim: Permet à plusieurs threads de lire simultanément, mais à un seul d'écrire.
Le choix du mécanisme de verrouillage dépend de la tâche de synchronisation spécifique. lock est une forme abrégée d'utilisation de Monitor.Enter et Monitor.Exit, et convient à la plupart des cas simples de synchronisation au sein d'un même processus.