Multithreading support has been built into Delphi since its inception.
The very first 32-bit version, Delphi 2, introduced a TThread class. At that time, TThread was a very simple wrapper around the Windows CreateThread function. In later Delphi releases, TThread was extended with multiple functions and with support for other operating systems, but it still remained a pretty basic tool.
The biggest problem with TThread is that it doesn't enforce the use of any programming patterns. Because of that, you can use it to create parallel programs that are hard to understand, hard to debug, and which work purely by luck. I should know—I shudder every time I have to maintain my old TThread-based code.
Still, the TThread approach can be very effective and completely readable, provided that you use it correctly. On the next pages, I'll firstly...