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...