Dupe:return statement in a lock procedure: inside or outsidemogę umieścić return wewnątrz zamka
tytuł jest nieco mylący. Wiem, że możesz to zrobić, ale zastanawiam się nad konsekwencjami wydajności.
rozważ te dwa bloki kodu. (Bez obsługi błędów)
Blok ten ma return
poza zamkiem
public DownloadFile Dequeue()
{
DownloadFile toReturn = null;
lock (QueueModifierLockObject)
{
toReturn = queue[0];
queue.RemoveAt(0);
}
return toReturn;
}
Blok ten posiada oświadczenie return
ciągu blokadę
public DownloadFile Dequeue()
{
lock (QueueModifierLockObject)
{
DownloadFile toReturn = queue[0];
queue.RemoveAt(0);
return toReturn;
}
}
Czy jest jakaś różnica w kodzie ? Rozumiem, że różnice w wydajności (jeśli występują) byłyby minimalne, ale zastanawiam się, czy nie byłoby różnicy w kolejności, w której lock
dostaje zwolnienie.
* Na pewno * zostało to już wcześniej pokryte? – annakata
Nie mogłem znaleźć wyników, ponieważ wcześniej nie korzystałem z odpowiednich wyszukiwanych terminów. Tak, to dupek. – DevinB