![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
ViGOur |
![]()
Сообщение
#11
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(512es @ 12.11.2008, 0:43) Link через сигнал\слот что то не получилось, т.к. надо передать ещё несколько переменных.. Почему не получилось? Не вижу проблем в передаче каких бы то ни было переменных!
|
|
|
512es |
![]()
Сообщение
#12
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
вообще, это мой первый проект на Qt, потому прошу сильно ногами не бить =)
вот как я пытаюсь делать:
знаю что многое ещё выгледит слишком не красиво, но сейчас мне нравное разобраться с потоками.. в дальнейшем вынесу всё управление пользователями в отдельный класс.. так вот, проблема в том что PThread::customEvent(QEvent *event) выполняется почему то в главном потоке( хотя по идее должен в дочернем.. это можно наглядно увидеть через Process Explorer. когда доходит до цикла forever вешается главный поток, а не дочерний( |
|
|
512es |
![]()
Сообщение
#13
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
попробовал через сигнал\слот..
всё равно в том же потоке выполняется =( |
|
|
512es |
![]()
Сообщение
#14
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
вообщем, всю голову сломал, не знаю как сделать(
Link написано что есть 3 способа: 1) передача эвентов 2) QCoreApplication::invokeLater() 3) и сигнал\слот с QueuedConnection но к сожалению всё сказаное там для явы.. пробовал эвенты и через сигнал\слот с QueuedConnection. пробовал даже вызывать метод в котором эмитится сигнал по которому вызывается нужный слот, как тут: Link результат один и тот же( обгуглил весь инет, народ, не ужели никто не знает как вызывать метод из класса дочернего потока чтобы он выполнился в том самом дочернем а не в главном? на ум приходит ещё один оч кривой способ.. отказаться от родителя в дочерних потоках и добавить в нужные методы moveToThread(this) иии.. вот только что родилась идея ещё хуже.. пересылать данные по TCP на локалхост соединению между главным и дочерними потоками =)) бред.. |
|
|
ViGOur |
![]()
Сообщение
#15
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(512es @ 13.11.2008, 12:27) Link не ужели никто не знает как вызывать метод из класса дочернего потока Я знаю, но судя по обсуждению ты не понял, что и как делать, потому мне пример писать нужно, а времени пока увы нет. ![]() Честно говоря там ничего сложного нет... |
|
|
ViGOur |
![]()
Сообщение
#16
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Вот я пример набросал, правда с рисованием, но думаю идея будет понятна...
![]() Раскрывающийся текст main.cpp
xThread.h
xThread.cpp
Сообщение отредактировал ViGOur - 13.11.2008, 14:31 |
|
|
512es |
![]()
Сообщение
#17
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, спасибо!) то что надо!))
у меня рождалась мысль что объект надо создавать в секции run() но уже не верилось что это заработает.. вообще жудко запутаная конструкция получилось, жаль что нельзя упростить.. хотяя... |
|
|
ViGOur |
![]()
Сообщение
#18
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(512es @ 13.11.2008, 16:42) Link ViGOur, спасибо!) то что надо!)) Не за что, обращайся еще... ![]() Цитата(512es @ 13.11.2008, 16:42) Link жаль что нельзя упростить.. Можно.
|
|
|
512es |
![]()
Сообщение
#19
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
разве что от CxThread::drawText() удалось избавиться)
вообще сервер работает быстро и надёжно) сколько бы не подключалось клиентов, пакеты им приходят моментально!) отказался от эвентов, использую везде теперь только сигнал\слот =) |
|
|
Litkevich Yuriy |
![]()
Сообщение
#20
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(512es @ 15.11.2008, 4:19) Link вообще сервер работает быстро и надёжно) сколько бы не подключалось клиентов, пакеты им приходят моментально!) Ну вот, а на пргорге тема о высоконагруженном сервере на Qt зашла в тупик (Link)
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.8.2025, 18:53 |