Форум программистов, компьютерный форум, киберфорум
Комментарии
Войти
Регистрация
Восстановить пароль
  1. Старый комментарий
    Аватар для Avazart
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Не увидел указаний на ошибки, неточности или что-нибудь в этом духе.
    А ну... о чем спорим если вы даже не видите явных указаний.
    Хотите более явных указаний? Пожалуйста - выкиньте свой код на помойку, и завязывайте с программированием.

    Цитата:
    Вы привязались к созданию потоков, я признал опечатку, исправил
    Опечатка? Я объяснил почему выходят такие опечатки.
    нефиг пихать все в одну кучу, и отводить одному классу кучу задач.
    Есть класс "рабочий" который ответственен за всю работу и передается в класс поток, и есть класс "контролер"
    который создает оба объекты этих классов управляет,связывает итп.
    И все прозрачно, а не так как у вас.

    Но я уже не напоминаю что можно было обойтись использованием QtConcurent что выглядело бы куда проще.

    Цитата:
    Даже если не утилизировать созданый на куче поток, он и его данные не утекут с завершением приложения.
    Да при чем тут утечки, владение/принадлежность прямым образом влияет на тип связывания слотов и как следствие синхронизацию между потоками.
    Запись от Avazart размещена 20.01.2016 в 13:18 Avazart вне форума
    Обновил(-а) Avazart 20.01.2016 в 13:28
  2. Старый комментарий
    Аватар для icpu
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    А зачем оно мне? Мне за это никто не заплатит.
    Да и кому действительно надо смотрит в доку и читает книги как советуют.
    Я всё ещё не увидел реализации лучше. Не увидел указаний на ошибки, неточности или что-нибудь в этом духе.

    Вы привязались к созданию потоков, я признал опечатку, исправил. /* Если бы я намеренно делал поток потомком объекта, я бы не хранил явно указатель на него, а фильтровал бы детей. Благо, поток нужен раз в сто лет в обед. */ Тем не менее, указанных вами последствий не наступает, потому как вначале создаётся поток, указатель на который передаётся в объект, а потом контекст объекта передаётся в контекст потока, т.е. поток остаётся в старом контексте. Потоки не блокируются, утечек не происходит, неопределённого поведения так же нет. Даже если не утилизировать созданый на куче поток, он и его данные не утекут с завершением приложения.

    В чём конкретно вы видите ошибку? В том, что я не отнаследовался от класса потока? В том, что выложил черновую заготовку, которую ещё нужно дорабатывать? В том, что я явно вызываю invoke?
    Запись от icpu размещена 20.01.2016 в 12:50 icpu вне форума
  3. Старый комментарий
    Аватар для Avazart
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Эммм, что? Где? Вы думаете, я просто так указатели на QThread использовал, для фана? UPD: Да, была опечатка. Исправил.
    C++ (Qt)
    1
    
    th = new QThread(this);
    Нифиговая опечатка.

    Цитата:
    Напишите лучше, ткните меня в грязь лицом.
    А зачем оно мне? Мне за это никто не заплатит.
    Да и кому действительно надо смотрит в доку и читает книги как советуют.
    Запись от Avazart размещена 20.01.2016 в 12:37 Avazart вне форума
    Обновил(-а) Avazart 20.01.2016 в 12:38
  4. Старый комментарий
    Аватар для icpu
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Пока претендует только на нецензурное название.
    будет оно. Без шуток.
    Цитата:
    объект класса потока, а затем передаете объект этого рабочего класса (а вслед за ним тянется и объект потока) в поток
    Эммм, что? Где? Вы думаете, я просто так указатели на QThread использовал, для фана? UPD: Да, была опечатка. Исправил.
    Цитата:
    быдлокод и будет быдлокодом
    Я всё ещё не встретил кода, который бы делал то же самое и компилировался. Быдлокод? Допустим. Напишите лучше, ткните меня в грязь лицом.
    Запись от icpu размещена 20.01.2016 в 07:23 icpu вне форума
    Обновил(-а) icpu 20.01.2016 в 07:40
  5. Старый комментарий
    Аватар для Avazart
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Выберите название для этого класса, будет оно. Без шуток.
    Пока претендует только на нецензурное название.
    Цитата:
    как у меня и делается. Нэ?
    А вы не видите отличий от примеров из доки?
    Вы в рабочем классе определяете объект класса потока, а затем передаете объект этого рабочего класса (а вслед за ним тянется и объект потока) в поток. Тут даже предположить какие могут быть последствия сего тяжело, да в принципе и не нужно ибо видно что быдлокод и будет быдлокодом даже если будет компилится, хотя бы из-за самой структуры кода.
    Запись от Avazart размещена 15.01.2016 в 17:28 Avazart вне форума
    Обновил(-а) Avazart 15.01.2016 в 18:32
  6. Старый комментарий
    Аватар для icpu
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Это не религия, это культура
    Выберите название для этого класса, будет оно. Без шуток.
    Цитата:
    Ну погуглите тема избитая. Я же говорю прежде чем постить стоило хотя бы чуть почитать про потоки.
    Я-то в курсе, быть может вы не очень? Или невнимательно просмотрели код?
    Ознакомьтесь с примерами из официальной документацией, в которой написано, что годится передача "рабочего" объекта в поток, как у меня и делается. Нэ?
    модуль QConcurent перемещает параметры-объекты в создаваемые им потоки (или передаваемый ему пул потоков), хотя классы БД могут использоваться только в том потоке, в котором они созданы. См. Worker::init()

    Пожалуйста, проверьте работоспособность класса. Вдруг окажется. что это быдлокожий уродец работает, и не создаёт при этом лишних сущностей.
    Запись от icpu размещена 15.01.2016 в 17:03 icpu вне форума
  7. Старый комментарий
    Аватар для Avazart
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Моё право. А ваше право - плеваться и выть.
    Моё право отвернуться и уйти оставить вас наедине с вашим быдлокодом что бы вы сколь угодно долго на него плевали и выли...
    Цитата:
    Извините, что задел ваши религиозные чувства, но я агностик,
    Это не религия, это культура, хороший тон, то когда с вами и вашим кодом вежливо обращаются не зависимо от вероисповедания, а не придают забвению.
    Цитата:
    Чем moveToThread(th); не угодил?
    Ну погуглите тема избитая. Я же говорю прежде чем постить стоило хотя бы чуть почитать про потоки.
    Цитата:
    Тогда прошу ознакомиться с холиваром, а не на потоки кивать.
    Ознакомьтесь с примерами из официальной документацией и вопросы отпадут сами собой.
    Для использования годится как наследование(в зависимости от ситуации конечно), так и передача "рабочего" объекта в поток, но явно не то ... что у вас.
    Кстати между прочем кроме QThread есть еще и модуль QConcurent.

    Читайте последние сообщение в той теме:
    Цитата:
    Сообщение от Dmitriy_M Посмотреть сообщение
    По поводу moveToThread, то есть классы, экземпляры которых могут использоваться только в том потоке, в котором он создан.
    Классы для работы с БД насколько я знаю именно такие.
    Запись от Avazart размещена 15.01.2016 в 13:59 Avazart вне форума
    Обновил(-а) Avazart 15.01.2016 в 14:29
  8. Старый комментарий
    Аватар для icpu
    QThread + QtSql: Асинхронные запросы
    Цитата:
    DependencyWalker и иже с ними
    Хорошо, молодец, с меня печенька. Но вот QtSQL'у от этого ни холодно, ни жарко.
    Цитата:
    Worker обычно класс который передается в поток, а у вас непонятно что, даже не Controler
    Извините, что задел ваши религиозные чувства, но я агностик, и мне на всё это поровну. Захочу, в fAa переименую, а методы в _0(...); _1(...);. Моё право. А ваше право - плеваться и выть.
    Цитата:
    можно ...
    Чем moveToThread(th); не угодил? Утечек не создаёт, контроль над объектом не утекает. Как же сделать иначе, унаследовать QThread? Тогда прошу ознакомиться с холиваром, а не на потоки кивать.

    Ещё замечания?

    UPD: Worker по логике работы класса скорее Executor. Получает задание через стандартную очередь и выполняет его. Но был он назван Worker'ом, так теперь и есть.
    Запись от icpu размещена 15.01.2016 в 11:50 icpu вне форума
    Обновил(-а) icpu 15.01.2016 в 11:57
  9. Старый комментарий
    Аватар для Avazart
    QThread + QtSql: Асинхронные запросы
    Цитата:
    если бы вы, к примеру, написали в бложике чего-нибудь на тему.
    Я не сталкивался и не разбирался с данной темой, по этому не вижу смысла писать на это тему.
    Но для того что бы оценить ваш код этого не нужно.

    Цитата:
    заменяется DependencyWalker'ом.
    DependencyWalker'ом не определяет динамические зависимости(плагины) и не копирует файлы в соответствии с потребностями(расположение файлов) Qt.

    Цитата:
    Worker потому что во мне погиб сочинитель имён классов. В зародыше.
    А с ним программист?
    Worker обычно класс который передается в поток, а у вас непонятно что, даже не Controler

    Цитата:
    А есть альтернативы?
    Альтернатива почитать про потоки и писать по нормальному и правильно, а не тяп-ляп и еще и выкладывать.

    За один только
    C++ (Qt)
    1
    
    moveToThread(th);
    можно ...

    А ведь есть еще:
    C++ (Qt)
    1
    2
    3
    4
    5
    
    Worker::~Worker() {
        th->terminate();
        db.close();
        th->deleteLater();
    }
    Запись от Avazart размещена 15.01.2016 в 11:29 Avazart вне форума
    Обновил(-а) Avazart 15.01.2016 в 11:39
  10. Старый комментарий
    Аватар для icpu
    QThread + QtSql: Асинхронные запросы
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Так Worker или lpWorker ?
    И почему Worker ?
    Исправил. Worker потому что во мне погиб сочинитель имён классов. В зародыше.
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Как по мне код- фигня, лучше бы не выкладывал.
    А есть альтернативы? Вот я за час в обнимку с гуглом не нашёл. Я бы и не выкладывал, если бы вы, к примеру, написали в бложике чего-нибудь на тему. Но, увы, вы делали интересный и, одновременно, избыточный инструмент, который запросто заменяется DependencyWalker'ом.
    Запись от icpu размещена 15.01.2016 в 06:32 icpu вне форума
  11. Старый комментарий
    Аватар для Avazart
    QThread + QtSql: Асинхронные запросы
    C++ (Qt)
    1
    2
    3
    4
    
    class Worker : public QObject {
        Q_OBJECT
    public:
        lpWorker();
    Так Worker или lpWorker ?
    И почему Worker ?

    Как по мне код- фигня, лучше бы не выкладывал.
    Запись от Avazart размещена 14.01.2016 в 12:50 Avazart вне форума
    Обновил(-а) Avazart 14.01.2016 в 12:56
  12. Старый комментарий
    Аватар для icpu
    Qt: табличка в QComboBox
    Цитата:
    Сообщение от Avazart Просмотреть комментарий

    Не по теме:

    Скриншот бы добавил наглядности.

    Слушаю и повинуюсь.
    Запись от icpu размещена 28.09.2015 в 14:19 icpu вне форума
  13. Старый комментарий
    Аватар для Avazart
    Qt: табличка в QComboBox

    Не по теме:

    Скриншот бы добавил наглядности.

    Запись от Avazart размещена 28.09.2015 в 14:06 Avazart вне форума
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.