Название: QRunnable. Сигнал доходит после завершения потока. Отправлено: vebmaster от Февраль 10, 2017, 19:44 Приветствую.
имеется пул Код: threadPool = new QThreadPool; Код: Work *worker = new Work(); после доабавления заданий в очередь пула жду завершения Код: threadPool->waitForDone(-1); Название: Re: QRunnable. Сигнал доходит после завершения потока. Отправлено: Пантер от Февраль 13, 2017, 09:26 Не совсем понял проблему, но мне кажется, что все дело в Qt::QueuedConnection при соединение, в итоде ты сигналы и получаешь не сразу после waitForDone.
Название: Re: QRunnable. Сигнал доходит после завершения потока. Отправлено: vebmaster от Февраль 13, 2017, 22:24 вот я добавил допустим 10 заданий в пул (пул на 50 потоков)
Код: threadPool->start(worker); Т.е. если первый поток справился за 1 секунду и отправил сигнал, а 10й поток завершился за 30 секунд, то сигнал от 1-го потока всё равно прийдёт когда завершится 10й. (прийдут все 10 сигналов за раз) Название: Re: QRunnable. Сигнал доходит после завершения потока. Отправлено: Пантер от Февраль 13, 2017, 22:57 waitForDone убери
Название: Re: QRunnable. Сигнал доходит после завершения потока. Отправлено: Igors от Февраль 14, 2017, 12:07 Некому ловить сигнал, пул просто вызывает QRunnable::run (а не ждет в цикле событий нитки)
Название: Re: QRunnable. Сигнал доходит после завершения потока. Отправлено: vebmaster от Февраль 14, 2017, 19:41 waitForDone убери тоже самоеНекому ловить сигнал, пул просто вызывает QRunnable::run (а не ждет в цикле событий нитки) т.е. задействовать сигналы не получится чтоль?Название: Re: QRunnable. Сигнал доходит после завершения потокk Отправлено: vebmaster от Февраль 20, 2017, 20:14 разобрался, спасибо, у куРуннабле отсутствует цикл обработки событий и сигналы во вне он отправлять не может.
подробнее здесь (https://wiki.qt.io/Threads_Events_QObjects/ru#.D0.A1.D1.80.D0.B0.D0.B2.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B2.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE.D1.81.D1.82.D0.B5.D0.B9)и здесь (https://habrahabr.ru/post/261955/) Название: Re: QRunnable. Сигнал доходит после завершения потока. Отправлено: vebmaster от Февраль 20, 2017, 20:16 а возможно ли как то управлять колличеством потоков в QThread , как с пулом threadPool->setMaxThreadCount(50)?
Название: Re: QRunnable. Сигнал доходит после завершения потока. Отправлено: Old от Февраль 20, 2017, 20:22 а возможно ли как то управлять колличеством потоков в QThread , как с пулом threadPool->setMaxThreadCount(50)? QThread управляет ровно одним потоком. |