Russian Qt Forum
Ноябрь 23, 2024, 18:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Клиент -> сервер -> бд?  (Прочитано 19775 раз)
V1KT0P
Гость
« Ответ #30 : Октябрь 06, 2012, 22:34 »

Если б в Qt можно писать/читать в сокет из разных потоков, да и сам сокет перемещать по потокам, то может быть легче было б.
Я как-то делал подобное, у меня был класс балансировщик, который при подключении клиента помещал его в поток с наименьшим количеством клиентов. Но на сотне клиентов начиналось нереальное пожирание оперативки, да и производительность начинала сильно падать. В итоге переписал на asio, стало работать быстро и перестало жрать память. Плюс пропала привязанность клиента к потоку, любого клиента обрабатывает любой поток который к этому времени освободился.

И ещё может кто-нибудь объяснить как используются callback-функции применительно к потокам? Как их используются для функций типа sort я понимаю, а вот с потоками никак.
Вообще в кьюте принято посылать сигналы а не вызывать коллбэки.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #31 : Октябрь 07, 2012, 11:59 »

2. Классы Qt отлично подходят, если их правильно применять.
...
    -При старте сервера - запускаем n трэдов. При incomming connection - создаём сокет, и сразу запихиваем в трэд.
    -Последующая обработка протокола - в соккете.
    -БД вешаем в отдельный трэд и коммуницируем слотами\сигналами.
...
А конкретно в данной теме - то вполне реально уложится до 1000 строк.
Ещё один теоретик? Или есть РЕАЛЬНО работающее серверное решение для Qt на базе QTCPSocket и сигнал/слотах, держащее хотя-бы 1000 соединений?

Bepec, если не затруднит, можно линки?
Интерестно будет почитать.
Ищите на этом форуме по слову asio.
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.