Здравствуйте, гость ( Вход | Регистрация )
|
512es |
10.11.2008, 16:00
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0
|
всем привет!
пишу многопоточный высокопроизводительный сервер на qt. сервер прослушивает коннекты на определённый порт и на каждое входящее соединение создаёт отдельный поток. при каждом пришедшем пакете поток отсылает главному потоку сообщение через customEvent. вроде работает, только не знаю как правильнее заставить все дочерние потоки (или один выборочно) отослать определённый пакет клиентам? закинул все потоки массив QVector и передаю в customEvent главного потока ид того кто отправил. правильный путь ли я выбрал? |
|
|
|
![]() |
|
ViGOur |
11.11.2008, 0:19
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
Цитата(Litkevich Yuriy @ 10.11.2008, 19:16) Link но вроде слот выполняется там, где его собственный объект. В том потоке в котором был создан объект получатель.Цитата(512es @ 10.11.2008, 19:05) Link дабы не вешать главный поток при ддос атаках. Тогда тебе нужно отказаться от схемы "1 соединени - 1 поток", а подумать о реализации схему "много соединений - 1 поток". Например в винде можно обрабатывать в одном потоке 64 соединения, в никсах не знаю сколько, но думаю, что не меньше...Да и то это поможет при маленьком DDOS'ике, при серьезном, когда порядка 100 000 соединений к тебе идет у тебя тупо не хватит ресурсов для обработки. Что-то ты зациклился на ID соединений, чем тебе не нравится указатель на соединение? Что ID 4 байта, что указатель 4 байта, только с указателем нужно меньше телодвижений чем с ID. Список соединений тебе скорее всего понадобится, иначе где класс менеджер соединений будет хранит указатели на соединения? Класс менеджер соединений должен быть синглтоном, надеюсь не нужно объяснять почему. При установке соединений сервер создает указатель на него, который помещает в менеджер соединений. При закрытии соединения посылается сигнал менеджеру соединений для того, чтобы он удалил из списка данное соединение, и если соединение было последним в потоке, то завершать поток (в это случае нужно предусмотреть на нагруженном сервере пул потоков, чтобы не тратить системные ресурсы на создание новых потоков). И прочее... |
|
|
|
512es QThread, QEvent, QTcpServer 10.11.2008, 16:00
Litkevich Yuriy Цитата(512es @ 10.11.2008, 19:00) при каж... 10.11.2008, 16:27
ViGOur Если я тебя правильно понял, то тебе нужен менедже... 10.11.2008, 16:48
512es Litkevich Yuriy, customEvent потому что хочу всё ч... 10.11.2008, 19:05
Litkevich Yuriy Цитата(512es @ 10.11.2008, 22:05) а как я... 10.11.2008, 19:16
512es Цитата(ViGOur)В том потоке в котором был создан об... 11.11.2008, 11:53
ViGOur Цитата(512es @ 11.11.2008, 11:53) а как л... 11.11.2008, 13:23
Litkevich Yuriy Мысль в слух:
Нельзя ли сделать один поток для авт... 11.11.2008, 15:05
512es Цитата(Litkevich Yuriy)если авторизованый пользова... 12.11.2008, 0:43
ViGOur Цитата(512es @ 12.11.2008, 0:43) через си... 12.11.2008, 8:29
512es вообще, это мой первый проект на Qt, потому прошу ... 12.11.2008, 13:06
512es попробовал через сигнал\слот..
connect(th... 12.11.2008, 15:02
512es вообщем, всю голову сломал, не знаю как сделать(
... 13.11.2008, 12:27
ViGOur Цитата(512es @ 13.11.2008, 12:27) не ужел... 13.11.2008, 13:17
ViGOur Вот я пример набросал, правда с рисованием, но дум... 13.11.2008, 14:30
512es ViGOur, спасибо!) то что надо!))
у меня ро... 13.11.2008, 16:42
ViGOur Цитата(512es @ 13.11.2008, 16:42) ViGOur,... 13.11.2008, 18:01
512es разве что от CxThread::drawText() удалось избавить... 15.11.2008, 1:19
Litkevich Yuriy Цитата(512es @ 15.11.2008, 4:19) вообще с... 15.11.2008, 1:29
ViGOur Цитата(Litkevich Yuriy @ 15.11.2008, 1:29... 15.11.2008, 10:28
512es ViGOur, провёл эксперимент:
подключился двумя клие... 20.11.2008, 13:52
ViGOur Цитата(512es @ 20.11.2008, 13:52) а если ... 20.11.2008, 15:21
512es тут просто разные нужды. мне важно чтобы все юзвер... 20.11.2008, 16:59
ViGOur Цитата(512es @ 20.11.2008, 16:59) тут нем... 20.11.2008, 20:21![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 3.3.2026, 20:59 |