While this book focuses almost exclusively on the out-of-the-box Delphi experience, sometimes I do point to external libraries that can simplify your programming experience. In the context of this chapter, such libraries are Spring4D (www.spring4d.org) and OmniThreadLibrary (www.omnithreadlibrary.com).
Spring4D is a multipurpose library with very limited support for parallel programming. It is, however, widely used in the Delphi community. If you are already using it, you may find the following notes helpful.
I've said before that creating and destroying TCriticalSection
objects is a pain. To fix that, Spring4D introduces a Lock
record which doesn't require initialization. You just declare a variable of that type and then use its Enter
and Leave
methods.
Another useful Spring4D addition is the optimistic initializer, TLazyInitializer
. In the section Object life cycle, I've shown how to safely initialize the FSharedObject: TSharedObject
variable and it was not very simple...