Kagamin <s...@here.lot> wrote:
Let's consider the following code:
synchronized(syncRoot)
{
if(condition)opSuccess();
else writeln(possibly,slow);
}
Suppose the else close doesn't need to be executed in lock domain and
can be slow. How to minimize lock time here?
synchronized(syncRoot)
{
if(condition)opSuccess();
else goto Lwrite;
}
Lwrite: writeln(possibly,slow);
We can do this... but...
A flag, as has been mentioned, would work.
Other solutions that might work:
////////
synchronized(syncRoot)
{
if (condition)
{
opSuccess();
return;
}
}
writeln(possibly,slow);
////////
do
{
synchronized(syncRoot)
{
if (condition)
{
opSuccess();
break;
}
}
writeln(possibly, slow);
} while (false);
////////
bool helperFunc( ) {
synchronized( syncRoot )
{
if ( condition ) {
opSuccess();
return true;
} else {
return false;
}
}
}
if (!helperFunc( )) {
writeln( possibly, slow );
}
--
Simen