My application is a tcp/ip server, with main thread created only once & listening all the time. When new client connects, the main thread creates the new thread of
Sounds like this article may help
What you'll see if you click that link:
Using Semaphores in Delphi, Part 2: The Connection Pool
By: Cary Jensen
Abstract: Semaphores are used to coordinate multiple threads and processes. That semaphores provide multiple threads with simultaneous access to a shared resource is highlighted by the TFixedConnectionPool class described in this article.