Libgda's global limitations are:
Libgda is not thread safe. However it supports working with threads as long as any object (except otherwise stated) created by the API is used by one single thread (that is there is no situation when two threads try to access the same object at the same time). Exceptions are:
Libgda's configuration can be accessed from any thread
Any object which implements the GdaLockable interface can be accessed from any thread. However one can use the gda_lockable_lock() method to specifically lock an object's usage (especially when getting and setting properties before or after calling methods).
Any GdaConnection object can be accessed from any thread (that object implements the GdaLockable interface). Also some database providers may impose other limitations (inherited from the database's specific client APIs) such as only one thread can use the connection object, or even that only one thread can use the database provider.
Any GdaAttributesManager can safely be accessed from any thread.
Note that multi threading support is still at an early stage and may contain bugs