Dupe:return statement in a lock procedure: inside or outside¿Puedo poner una sentencia return dentro de una cerradura
El título es un poco engañoso. Sé que puedes hacerlo, pero me pregunto sobre las implicaciones de rendimiento.
considere estos dos bloques de código. (Sin control de errores)
Este bloque tiene la return
fuera de la cerradura
public DownloadFile Dequeue()
{
DownloadFile toReturn = null;
lock (QueueModifierLockObject)
{
toReturn = queue[0];
queue.RemoveAt(0);
}
return toReturn;
}
Este bloque tiene la return
comunicado dentro la cerradura
public DownloadFile Dequeue()
{
lock (QueueModifierLockObject)
{
DownloadFile toReturn = queue[0];
queue.RemoveAt(0);
return toReturn;
}
}
¿Hay alguna diferencia en el código ? Entiendo que las diferencias de rendimiento (si las hay) serían mínimas, pero me pregunto específicamente si habría una diferencia en el orden en que se libera el lock
.
* Seguramente * ¿esto ha sido cubierto antes? – annakata
No pude encontrar los resultados porque antes no estaba usando los términos de búsqueda correctos. Sí, es una tontería. – DevinB