Difference between revisions of "Coding Conventions"

From Agility
Jump to: navigation, search
(Critical sections should be small and predictable)
(Critical sections should be small and predictable)
Line 15: Line 15:
 
     transBO.getDataByKey(phraseKey);
 
     transBO.getDataByKey(phraseKey);
 
     result = transBO.detailData.syPhrase.Find(phraseKey);
 
     result = transBO.detailData.syPhrase.Find(phraseKey);
 +
    [...]
 
}
 
}
 
</pre>
 
</pre>
Line 25: Line 26:
 
{
 
{
 
     result = transBO.detailData.syPhrase.Find(phraseKey);
 
     result = transBO.detailData.syPhrase.Find(phraseKey);
 +
    [...]
 
}
 
}
 
</pre>
 
</pre>

Revision as of 14:48, 23 January 2017


Multithreading

Critical sections should be small and predictable

To avoid dead-locks critical sections should be small enough to prove that dead lock is not possible. Critical section should not cover any complicated business task which access to database (for example business action).

Please AVOID below construction:

lock(typeof(TranslateBO))
{
    transBO.getDataByKey(phraseKey);
    result = transBO.detailData.syPhrase.Find(phraseKey);
    [...]
}

In above example getDataByKey function is used inside critical section. It is NOT possible to prove that this function placed in critical section will never fall into dead-lock. Above example should be fixed with:

transBO.getDataByKey(phraseKey);
lock(typeof(TranslateBO))
{
    result = transBO.detailData.syPhrase.Find(phraseKey);
    [...]
}