Как приостановить выполнение слота (но не треда!), а потом снаружи

продолжить его выполнение?

24 ответов

18 просмотров

А что значит снаружи?

никак. можно processEvent из слота покрутить, но это на крайний случай

blur- Автор вопроса
Александр Серый
А что значит снаружи?

Ну как я представляю. У нас есть система сигнал-слот, в ней кооперативная многозадачность. И я хочу не блокироваться в слоте, а передать управление. А потом передам управление назад

blur
Ну как я представляю. У нас есть система сигнал-сл...

корутины в С++ только добавили) возможно через года 3 будет их поддержка в Qt

blur
Ну как я представляю. У нас есть система сигнал-сл...

Я с многопоточностью не работал, но когда-то нужно было на время и при определенных условиях прекратить работу сигнала/слота, я просто disconnect сделал, а потом снова включил

blur
А boost.fiber тут подойдёт?

тут подойдет разделение 1-го слота на 2 слота

Александр Серый
Я с многопоточностью не работал, но когда-то нужно...

вроде не совсем то. он хочет посередине слота приостановить работу. штатными средствами qt вроде никак, если только делить слот на два как предложили

blur- Автор вопроса
Макс Воробьев
тут подойдет разделение 1-го слота на 2 слота

Не понял, как подойдёт? У меня ж слот заблокирует весь тред

blur- Автор вопроса
Макс Воробьев
что у тебя в слоте такого?

Запрос к субд. И я хочу по клику отменить

blur
Не понял, как подойдёт? У меня ж слот заблокирует ...

блокировать слот не стоит если он в основном потоке. а вообще ты наверное можешь просто создать отдельный поток и приостанавливать его

blur- Автор вопроса
mefest
блокировать слот не стоит если он в основном поток...

Да я не хочу целый поток делать, мне надо всего-навсего опрашивать состояние. Проблема в том, что у меня при этом qprogressdialog виснет

blur
Libpq

сам себе злобный буратино. чем Qt не подошел?

blur
Да я не хочу целый поток делать, мне надо всего-на...

если у тебя там операция которая надолго блокирует основной поток, то ui будет на это время подвисать, тут имхо правильно выносить это в отдельный поток и можно нормально общаться через сигнал-слот

blur- Автор вопроса
mefest
если у тебя там операция которая надолго блокирует...

Да через тред я сделал, но хотелось бы без этого обойтись. Файберы из буста тут можно приспособить?

blur
Есть причины...

тогда гугли libpq poll events

Похожие вопросы

Обсуждают сегодня

Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Чет мне ссыкотно опять Rainlab.User в проект ставить. Кто знает, опять наотъебись все сделали или после обнов пользоваться можно?
Black Cat
10
это группа токсиков или тех кто помогает?
Ибрагим
9
коллеги привет. уже второй день бьемся об заклад с одной ошибкой, может вы сталкивались с таки странным поведением? есть тестовый сервер, на который паблишим релизную версию W...
Magzhan
11
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
Можете помочь с этим, я тут использую Джанго как ОРМ для бота, но бот запускать не хочет, уже всезде перерыл не могу решить, может кто то сталкивался?
Ибрагим
4
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
всем привет. подскажите. сделал политику, он верхнеуровневая. раздал права только на TEST2 (полные). вопрос - можно ли сделать так, чтобы был доступен только TEST2, а остально...
Андрей Сергеев
5
t.me/<username> и tg://user?id=<id> отваливаются по понятным причинам
Denis 🐍|👑 | darling! 🥰
7
Карта сайта