Название: Параллельные потоки в QT. Отправлено: infernalcucumber от Июль 27, 2016, 13:12 Здравствуйте! Я новичок в QT,ранее почти не работал с потоками, хотелось бы навести справки как правильно пользоваться потоками,параллельно, прочитал достаточно много, каша в голове, усвоить пока не получается...
Вот пример: есть класс identificator, .h: Код: class identificator:public QObject { Код: #include "identificator.h" а вот main.cpp: Код: #include <QtCore> Ожидаю, что в консоль будет выводится числа 3 и 4, вразнобой,бесконечно долго, но при запуске в консоль выводится только 3. Очень прошу, объясните мне пожалуйста, как добиться их параллельной работы? Заранее спасибо! Название: Re: Параллельные потоки в QT. Отправлено: gil9red от Июль 27, 2016, 13:40 В такой функции будет постоянно, полностью загружая проц выводиться запись в консоль и никогда не вызовется сигнал finished, потому что:
* цикл бесконечный * выхода из него нет: break, return, goto Код
Название: Re: Параллельные потоки в QT. Отправлено: Igors от Июль 27, 2016, 14:03 Код: Qbject::connect(thread1, SIGNAL(started()), first, SLOT(printID())); - главная нитка запустила thread1 и thread2 и ушла на ожидание событий в exec(). - thread1 испустила сигнал started, но он сначала помещается в очередь EventLoop главной нитки - главная извлекает started из своего EventLoop и начинает печатать тройку - thread2 тоже испустила сигнал started, он тоже сначала помещается в очередь EventLoop главной нитки - но до его извлечения дело не доходит - ведь главная печатает тройки Название: Re: Параллельные потоки в QT. Отправлено: Bepec от Июль 27, 2016, 15:10 А я ещё больше скажу, что даже избавься от цикла ничего в параллельных потоках работать не будет :D
Ибо коннект будет queued и все ваши слоты будут выполняться в главном потоке. Да и объекты с этими слотами опять таки в главном потоке. Да и вообще у вас всё в главном потоке :D Название: Re: Параллельные потоки в QT. Отправлено: Igors от Июль 27, 2016, 15:30 А я ещё больше скажу, ... А может не надо? :)Чтобы печатать 3 и 4 добавьте 2 строки Код
Название: Re: Параллельные потоки в QT. Отправлено: Bepec от Июль 27, 2016, 16:31 Igors это как минимум странно.
Ставить под сомнение мой комментарий и сразу же добавлять решение выходящее из моего комментария :) |