Я сделал многопоточный доступ к данным, и это не так просто:
1) Вам необходимо создать сеанс для каждого потока.
2) Все, что сделано с этим экземпляром TDataSet, должно быть сделано в контексте потока, в котором он был создан. Это не легко, если вы хотите разместить, например, Сетка ДБ поверх него.
3) Если вы хотите, например, Основной поток игры с вашими данными, простое решение состоит в том, чтобы переместить их в отдельный контейнер какого-либо типа, например. набор данных памяти.
4) Вам нужен какой-то механизм сигнализации, чтобы уведомить основной поток после завершения поиска данных.
... и обработка исключений также не проста ...
Но: как только вы добьетесь успеха, приложение будет действительно элегантным!