I also had asked this question in the newsgroup: devzone.advantagedatabase.com, Advantage.Delphi
For the sake of completeness, I'll add further question/answer from the rest of that thread:
Question (Me):
Many of the queries in threads are currently not attached to a
TAdsConnection object. I'm planning to create a connection for each
thread for these "orphan" queries to use, but it is a large application
and this will take time. I'm also pretty sure that the only non-default
property in the TAdsSettings object is the server-types set, which can
also be set in the connection component, thus once all queries are
linked to connections, the settings component wont be needed. I'll look
into calling the settings API directly as an alternative.
In the meantime, I do have a question about threading and the queries
with no connection component assigned. I noted from the help files that
if queries in multiple threads share a single connection object, the
queries will be run in series rather than concurrently. With a
connection object in each thread, this should not be an issue, but I am
wondering about the queries which do not have a connection object
assigned. Will they be considered to be on independent connections from
the point of view of multithreading concurrency, or will they be
considered to be on the same connection and thus have to yield to each
other?
Answer (Jeremy):
You will need to address this. They will just search a global list of connections
to find one with the same path, and they will use that connection. Not good
in a multi-threaded application.
Thus, from Jeremy's answer it is best to create at least one TAdsConnection object for each thread and ensure that all queries are attached to it, otherwise serialization may occur.