Framework Design Guidelines by Krzysztof Cwalina Brad Abrams & Brad Abrams

Framework Design Guidelines by Krzysztof Cwalina Brad Abrams & Brad Abrams

Author:Krzysztof Cwalina,Brad Abrams & Brad Abrams
Language: eng
Format: epub
Publisher: Pearson Education Limited (US titles)
Published: 2009-07-15T00:00:00+00:00


JOE DUFFY In addition to deadlock, invoking a callback under a lock like this can cause reentrancy. Locks on the CLR support recursive acquires, so if the callback somehow manages to call back into the same object that initiated the callback, the results are often not good. Locks are typically used to isolate invariants that are temporarily broken, and yet this practice can expose them at the reentrant boundary. Needless to say, this is apt to cause weird exceptions and unexpected behavior.

That said, sometimes this practice is necessary. If the callback is being used to make a decision—as would be the case with a predicate—and that decision needs to be made under a lock, you will have no choice. When unavoidable, be sure to carefully document the restrictions (no inter-thread communication, no reentrancy). And you must ensure that, should a developer violate these restrictions, the result will not lead to security vulnerabilities. The risk here is usually greater than the reward.



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.