Preguntas etiquetadas con locking

El bloqueo permite que diferentes tipos de recursos sean utilizados exclusivamente por un proceso a la vez.

9
Volátil vs. Interbloqueado vs. bloqueo
Digamos que una clase tiene un public int countercampo al que acceden varios subprocesos. Esto intsolo se incrementa o disminuye. Para incrementar este campo, ¿qué enfoque debe usarse y por qué? lock(this.locker) this.counter++;, Interlocked.Increment(ref this.counter);, Cambie el modificador de acceso de countera public volatile. Ahora que he descubierto volatile, he …

10
Bloqueo optimista versus pesimista
Entiendo las diferencias entre el bloqueo optimista y pesimista. ¿Podría alguien explicarme cuándo usaría cualquiera de ellos en general? ¿Y la respuesta a esta pregunta cambia dependiendo de si estoy usando o no un procedimiento almacenado para realizar la consulta? Pero solo para verificar, optimista significa "no bloquear la mesa …

8
¿Cómo funciona exactamente el bloqueo?
Veo que para usar objetos que no son seguros para subprocesos envolvemos el código con un bloqueo como este: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Entonces, ¿qué sucede cuando varios subprocesos acceden al mismo código (supongamos que se ejecuta en …

16
¿Por qué es malo el bloqueo (esto) {...}?
La documentación de MSDN dice que public class SomeObject { public void SomeOperation() { lock(this) { //Access instance variables } } } es "un problema si se puede acceder a la instancia públicamente". Me pregunto por qué ¿Es porque el bloqueo se mantendrá más tiempo del necesario? ¿O hay alguna …








17
¿Qué es un punto muerto?
Al escribir aplicaciones multiproceso, uno de los problemas más comunes experimentados son los puntos muertos. Mis preguntas a la comunidad son: ¿Qué es un punto muerto? ¿Cómo los detectas? ¿Los manejas? Y finalmente, ¿cómo evitas que ocurran?

5
HashSet <T> concurrente en .NET Framework?
Tengo la siguiente clase. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); } Necesito cambiar el campo "Datos" de diferentes subprocesos, por lo que me gustaría obtener algunas opiniones sobre mi implementación actual segura para subprocesos. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); public void Add(string Val){ lock(Data) Data.Add(Val); …



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.