Threading in Delphi :: 
To speed up data processing, for example, fetching data from the database to create reports, you can add an additional thread to fetch and operate on the result (recordset). Watch out the traps in writing Multithreaded Delphi Database Queries.
Read the full article to learn about Multithreaded Delphi Database Queries with dbGo (ADO).
Related:


I post my question on stackoverflow:
http://stackoverflow.com/questions/2090533/confusion-of-thread-synchronization-problem
In an earlier I have not found a place to add comments.
Thank you