Pull to refresh

Comments 7

А у вас действительно RBWorker обрабатывает stop до того как закончит построение отчёта?
Вы же внутри сигнала запускаете обработку, тем самым вы останавливаете EventLoop и следующий сигнал будет доставлен уже после окончания обработки отчёта.
Я бы предположил что построение одного отчёта — задача достаточно быстрая (в то время как построение 5000 — нет), а значит можно не отменять построение отчёта а давать ему закончить.
В таком случае удобнее использовать QtConcurent (filter или map по вкусу) — он сам справится и с запуском потоков и с агрегацией выходных данных. Отменить обработку тоже можно, да и удобный индикатор выполнения — тоже большой плюс.
Стоит еще добавить, что не стоит создавать кучу потоков — какой смысл их генерить 5 тысяч штук, если ядра всего 2-4? Да и жрут они довольно много при создании/смерти, гораздо лучше использовать QThreadPool, в котором хранится оптимальное количество потоков, а задачи поступают по очереди.

К слову, QtConcurrent это делает автоматически
Я просто оставлю эту ссылку здесь: Threads, Events and QObjects
И насколько я помню, на хабре есть русский перевод, по-моему переводил пользователь surik.
UFO just landed and posted this here
Забавно, но не рекламы ради, посмотрите на дату моего поста. Не стал сюда писать из-за того, что особо описывать то и нечего :-).
Не хочу особо критиковать, но пост не то чтобы тянет на серьезный технологический. Пост, предоставленный Vass немного выше гораздо лучше. Его перевод тут уже есть, поэтому я немного сомневаюсь о целесообразности именно этого поста. А вообще — спасибо.
Sign up to leave a comment.

Articles

Change theme settings