Здравствуйте, гость ( Вход | Регистрация )
|
512es |
10.11.2008, 16:00
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0
|
всем привет!
пишу многопоточный высокопроизводительный сервер на qt. сервер прослушивает коннекты на определённый порт и на каждое входящее соединение создаёт отдельный поток. при каждом пришедшем пакете поток отсылает главному потоку сообщение через customEvent. вроде работает, только не знаю как правильнее заставить все дочерние потоки (или один выборочно) отослать определённый пакет клиентам? закинул все потоки массив QVector и передаю в customEvent главного потока ид того кто отправил. правильный путь ли я выбрал? |
|
|
|
![]() |
|
512es |
20.11.2008, 16:59
Сообщение
#2
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0
|
тут просто разные нужды. мне важно чтобы все юзвери ансинхронно получали и отправляли маленькие пакеты. без задержек и очередей на приём\отправку. и оно отлично работает когда на каждого отдельный поток.
хотя я и планирую иногда передавать от сервера к юзверем файлы не больше 1 мб, это не файлообменник, где можно экономить на времени отклика, выстраивая отправку\приём в очередь. вот наверное поэтому я всё никак с вами не соглашусь =)) ХР может спокойно работать с 2032 потоками. 2000 пользователей меня вполне устраивают =) каких то особых тормозов от создания\удаления потоков или поедания памяти я не вижу. а ещё рассчёт на многопроцесорные машины на мноого лет вперёд)))) Цитата(ViGOur) Цитата(512es) а если такие большие пакеты посылать в отдельный специальный поток, с низким приоритетом то вообще хоть терабайты пересылать можно, никто и не заметит =) Вот и я об этом же, потому и рекомендую экономить ресурсы, и повесить хотя бы по 32 соединения в поток, а не 1. тут немного ни о том речь)) 1) есть много много потоков, по 1 на юзверя (с низким приоритетом) 2) есть главный поток в котором очередь обработки (логика) когда пакет неспеша пришёл от дочернего потока он поступает в главный, там очередь на обработку. всё это обычно делается очень быстро, путём рассылки сигналов дочерним потокам. но вот в случае с файлом.. чтобы записать большой файл на диск потребуется время. потому я и сказал что можно для таких длительных операций сделать отдельную очередь обработки, чтобы не замедлять остальных вот и всё =) |
|
|
|
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
ViGOur Цитата(Litkevich Yuriy @ 10.11.2008, 19:1... 11.11.2008, 0:19
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
ViGOur Цитата(512es @ 20.11.2008, 16:59) тут нем... 20.11.2008, 20:21![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 5.3.2026, 6:00 |