Size: a a a

2021 February 26

A

Alex in pro.cxx
точнее, какой у них механизм и гарантии потокобезопасности?
источник

CD

Constantine Drozdov in pro.cxx
Alex
Qt, сигнал/слот)
Если без Qt, то есть мои сигнал/слот, есть очередь для перекладывания между потоками сообщений и/или кода (лямбд, std::function и т.д.). Или банально атомик проверять по таймеру.
А сделать чистый выход с остановкой дочерних потоков - наименьшая из проблем, обычно. Вообще не проблема.
> атомик проверять по таймеру
кто будет чистить память?
источник

A

Alex in pro.cxx
Не понимаю, что здесь должно быть проблематичного. Деструктор класса, который отвечает за асинхронную загрузку картинки.
источник

A

Alex in pro.cxx
он же и поток должен штатно остановить при досрочном завершении работы
источник

CD

Constantine Drozdov in pro.cxx
Alex
Qt, сигнал/слот)
Если без Qt, то есть мои сигнал/слот, есть очередь для перекладывания между потоками сообщений и/или кода (лямбд, std::function и т.д.). Или банально атомик проверять по таймеру.
А сделать чистый выход с остановкой дочерних потоков - наименьшая из проблем, обычно. Вообще не проблема.
А сигнал-слоты могут обеспечить проталкивание отмены задачи если она поставлена по цепочке?
источник

CD

Constantine Drozdov in pro.cxx
Скачать картинку, прожать
источник

A

Alex in pro.cxx
У вас ТЗ меняется на ходу, я не начинаю проектирование в таких условиях)
источник

CD

Constantine Drozdov in pro.cxx
Alex
У вас ТЗ меняется на ходу, я не начинаю проектирование в таких условиях)
Это супертипичная гуёвая конфигурация, когда надо проходить главный поток для синхронизации в промежутке
источник

A

Alex in pro.cxx
То ли не понимаю задачу, то ли не понимаю, в чём её подвох
источник

CD

Constantine Drozdov in pro.cxx
Alex
То ли не понимаю задачу, то ли не понимаю, в чём её подвох
Подвох в том, что invoke(secondary, скачать картинку).then(main, обновить прогресс).then(secondary, пережать картинку).then(main, отобразить в гуе), а картинку качать уже не надо, данные изменились
источник

CD

Constantine Drozdov in pro.cxx
Что еще хуже, надо качать совершенно другую и не дай бог прилетит не та
источник

A

Alex in pro.cxx
ну нет, как только команда отмены из главного потока прошла в сетевой поток, не та уже не может прилететь
источник

A

Alex in pro.cxx
обновление прогресса - независимое действие с точки зрения главного потока
источник

CD

Constantine Drozdov in pro.cxx
Alex
ну нет, как только команда отмены из главного потока прошла в сетевой поток, не та уже не может прилететь
в нормальных future/promise команда отмены делается переприсваиванием объекта
источник

CD

Constantine Drozdov in pro.cxx
Constantine Drozdov
Подвох в том, что invoke(secondary, скачать картинку).then(main, обновить прогресс).then(secondary, пережать картинку).then(main, отобразить в гуе), а картинку качать уже не надо, данные изменились
То есть вот это буквально код, который должен быть написан в гуе, всё
источник

A

Alex in pro.cxx
это c std::future/promise?
источник

CD

Constantine Drozdov in pro.cxx
нет, скажем, scala-like (см. folly)
источник

A

Alex in pro.cxx
если не std - то понятно, хорошая система, если для вас работает - поздравляю. Обработка ошибок, похоже, возможна только на исключениях.
источник

CD

Constantine Drozdov in pro.cxx
Alex
если не std - то понятно, хорошая система, если для вас работает - поздравляю. Обработка ошибок, похоже, возможна только на исключениях.
исключения возникают, когда возникают логические ошибки, скажем, из пары future/promise два раза пытаются достать promise
источник

A

Alex in pro.cxx
а если не логические?
источник