Здравствуйте, гость ( Вход | Регистрация )
|
512es |
10.11.2008, 16:00
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0
|
всем привет!
пишу многопоточный высокопроизводительный сервер на qt. сервер прослушивает коннекты на определённый порт и на каждое входящее соединение создаёт отдельный поток. при каждом пришедшем пакете поток отсылает главному потоку сообщение через customEvent. вроде работает, только не знаю как правильнее заставить все дочерние потоки (или один выборочно) отослать определённый пакет клиентам? закинул все потоки массив QVector и передаю в customEvent главного потока ид того кто отправил. правильный путь ли я выбрал? |
|
|
|
![]() |
|
512es |
12.11.2008, 0:43
Сообщение
#2
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy) если авторизованый пользователь начнет гадить, то навредит только десятерым потенциальная дыра.. таким способом можно по 9 пользователей убивать за заход =) значит, вместо QVector теперь использую QHash (быстрее икать пользователя по иду) дочерние потоки очень хорошо и удобно передают данные главному через customEvent. мало того, евенты складываются в очередь и это тоже меня устраивает. т.е. обрабатываются в порядке поступления. а вот отправка данных потоку не получается у меня как надо.. если вызывать метод напрямую через указатель на поток, хранящийся в QHash они выполняются всё равно в главном потоке. если эмитом вызывать слот результат такой же через сигнал\слот что то не получилось, т.к. надо передать ещё несколько переменных.. пробовал в дочерние потоки вставлять обработчик customEvent, эвенты приходят но всё равно выполняются в главном потоке =( в результате отсылка пакета 100 пользователям происходит очень долго. не смотря на то что они все подключались через локалхост. было бы идеальным быстро распарралелить по всем потокам процедуру отправки пакета по tcp не ждать отправки каждого.. завтра попробую в класс дочерних потоков добавить некую очередь, защищённую мьютексом, в которую буду добавлять пакеты, ожидающие отправки.. ииии... как то всётаки надо сообщить потоку о том что пора отправлять пакет =( не пойму, почему я не могу из родительского потока пробиться в дочерний?? |
|
|
|
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
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![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 14.12.2025, 7:20 |