Здравствуйте.
Возникла задача написать такой сервер:
Сервер должен получить данные от клиентов, провести над ними некоторые вычисления и вернуть результат клиенту.
В процессе вычислений могут поступать новые запросы.
Пытаюсь сделать так:
Ввёл структуру, в которой запоминаю сокет клиента, которому надо отослать результат работы с data_.
C++ (Qt)
struct ThreadData
{
Data data_;
QTcpSocket* socket_;
};
и очередь QQueue этих структур, которая заполняется в основном потоке
Вычисления крутятся в отдельном потоке наследнике QThread.
Данные извлекаются из очереди, обрабатываются, и отправляются клиенту с помощью
C++ (Qt)
socket_->write()
, если очередь пуста, крутится бесконечный цикл.
Фактически, из потока вычислений данные НЕ ДОХОДЯТ до клиента, хотя write завершается без ошибки.
В основном потоке данные по тому же сокету отправляются и доходят.
Читал где то на другом форуме, что сокеты нельзя передавать между потоками.
Так ли это? И как надо поступать?