Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 11.6.2009, 20:56 |
Собственно почему странно, если так можно самого "потока" запнуть в самого себя, то почему он сам этого не делает. Т.е. должно было бы быть так: и все функции, объявленные в нём, уже в другом потоке. |
|
SABROG | Дата 11.6.2009, 20:51 |
Может поместить это решение в "Секреты и интересные возможности" ? блин странно это всё.Может кто с QtConcurrent работал, там может быть можно иначе сделать? |
|
BRE | Дата 11.6.2009, 20:50 |
С точки зрения архитектуры подхожу к объектам потоков по другому... Получается, чтобы связать слот в потоке и сигнал из главного окна тебе приходится создавать дополнительный объект в run() к которому все и привязывать? Да, я не добавляю слоты в класс наследник от QThread (не расширяю его функциональность). А как ты и написал делаю отдельный класс, который содержит сигналы/слоты и он выполняет всю работу, его создаю в run и настраиваю связи. |
|
Litkevich Yuriy | Дата 11.6.2009, 20:48 |
Может поместить это решение в "Секреты и интересные возможности" ? блин странно это всё. |
|
SABROG | Дата 11.6.2009, 20:46 |
С точки зрения архитектуры подхожу к объектам потоков по другому... Получается, чтобы связать слот в потоке и сигнал из главного окна тебе приходится создавать дополнительный объект в run() к которому все и привязывать? |
|
BRE | Дата 11.6.2009, 20:44 |
Я к самому классу QThread и его наследникам отношусь немного по другому. Объект этого класса использую только для управления потоком, я не расширяю его функциональность. Т.е. есть методы управления и проверки состояния потока (с ними работа идет из запустившего потока) и как-бы отдельно метод run, который и описывает сам поток. Вот в нем я создаю необходимые объекты связываю их сигналами с объектами в других потоками и т.д. Управление идет через объект находящийся в контексте родительского (основного) потока, а что там в потоке делается это уже к run(). Блин, не знаю как получилось описать. С точки зрения архитектуры подхожу к объектам потоков по другому... |
|
igor_bogomolov | Дата 11.6.2009, 20:06 |
Жаль авторство не могу себе присвоить , хотя конечно решение самом себе в голову напрашивается. Себе авторство тоже присвоить не могу, но если посмотришь здесь (в атаче), увидишь, что я пришел к такому же решению. Я тогда только разбирался в этом вопросе, и сделал так скорее по незнанию. Я предлогаю делать так На мой взгляд, это будет правильнее. |
|
SABROG | Дата 11.6.2009, 17:56 |
Этот метод был разработан несколькими днями ранее kuzulis. Если верить его словам, то даже не им, он где-то это увидел Жаль авторство не могу себе присвоить , хотя конечно решение самом себе в голову напрашивается. Улыбнула фраза Константина Цитата собсна, вообще не удивительно. а вот tc->moveToThread(tc) улыбнуло...ассоциируется с картинкой, где чел сам себе в зад залазит /* может видел кто? */ Улыбающийся Ну хотябы могу себе название метода "Мюнхгаузена" присвоить --- Кстати, скорее всего человек увидел этот метод отсюда http://forum.vingrad.ru/forum/topic-241300...y1737536/0.html Этот топик один из первых выдается в гугле на поиск moveToThread. Еще немного погуглил и нашел такую переписку с канала #Qt: Цитата [04:58] <daniel> thiago_home: Yeah I just noticed I don't have to wait. [04:59] <daniel> Is "thread.start(); thread.moveToThread(&thread);" ok? [05:00] <thiago_home> yes Собственно, я так понимаю, что thiago_home это Thiago Macieira, раз он одобряет этот метод, то почему бы троллям не предложить ввести что-то типа флага, чтобы объект сразу сам в себя перемещался внутри метода start(). wasyota тоже такой метод предлагает. --- Может поместить это решение в "Секреты и интересные возможности" ? |
|
Litkevich Yuriy | Дата 11.6.2009, 17:46 |
Я назвал этот метод методом "Мюнхаузена" Этот метод был разработан несколькими днями ранее kuzulis. на что Константин сказал:Цитата улыбнуло...ассоциируется с картинкой, где чел сам себе в зад залазит |
|
BRE | Дата 11.6.2009, 17:41 |
Я решил поэкспериментировать и пришел к такому вот странному решению:
Я назвал этот метод методом "Мюнхаузена" Теперь действительно сигналы отправляются из главного потока и слот вызывается в дочернем потоке. Этот метод был разработан несколькими днями ранее kuzulis. http://www.prog.org.ru/topic_9694_0.html |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 17:06 |