Russian Qt Forum
Май 05, 2024, 19:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 13 14 [15]
211  Qt / Общие вопросы / Re: QObject is an inaccessible base of 'Мой класс' : Май 27, 2018, 16:40
у QAbstractTableModel много чисто виртуальных методов, их все надо у себя реализовать.
Проще от QStandartTableModel наследоваться.
212  Qt / Установка, сборка, отладка, тестирование / Re: установка Qt на Debian(новичек) : Май 26, 2018, 18:32
А что такое из под исков?, я не совсем понял намека
мышкой или клавиатурой работаете?
213  Qt / Вопросы новичков / Re: БД для хранения сообщений : Май 24, 2018, 19:22
У модели есть QAbstractItemModel::fetchMore(const QModelIndex &parent) можно из него сигналить на подтягивание данных (допустим 5-ти записей) с датой от parent-а и меньше.
214  Qt / Вопросы новичков / Re: БД для хранения сообщений : Май 23, 2018, 18:54
А если будет совсем уж длинная история сообщений, проблемы с пересылкой от сервера к клиенту могут возникнуть с целостностью или производительностью?
В крайнем случае можно сжать бинарные данные, перед высылкой в сеть.
215  Qt / Вопросы новичков / Re: БД для хранения сообщений : Май 22, 2018, 19:53
SQLite, если у каждого юзера своя история сообщений.
Одной таблицы хватит: ID юзера | Сообщение | InOut (true/false)
216  Qt / Многопоточное программирование, процессы / Re: Очень многопоточная архитектура приложения. : Май 17, 2018, 19:13
А просто очередь задач (возможно с приоритетом)?
Будете смеяться, но такая логика уже есть, и она сидит в своем потоке, и шлет сообщения остальным.

PS: вся сложность, что проект довольно большой, около 2000 цпп файлов, и рефакторинг, как я вижу, надо проводить "по верхам", т.е наследоваться от QThread и еще некоторый враппер объектов, которые по потокам раскидываются.
Есть некоторые мысли на этот счет, если вырастут в некий прототип, то выложу на рассмотрение.
217  Qt / Многопоточное программирование, процессы / Re: Очень многопоточная архитектура приложения. : Май 16, 2018, 19:08
Идея такая - есть несколько рабочих потоков (пусть будет 4) разгребают сообщения.
Тут сложность в реализации, а именно 100500 логических единиц абсолютно разной направленности, с вообще не похожей архитектурой, и их слить в единый АПИ по генерации сообщений (по всей видимости однотипных), как мне видится, не реально.
218  Qt / Многопоточное программирование, процессы / Re: Очень многопоточная архитектура приложения. : Май 16, 2018, 18:51
а для БД может лучше async?
Каждое подключение к БД работает в своем Qt-шном потоке.
Кстати, логика работы в БД во всей архитектуре, самая быстрая получается, дольше манарегы разгребают, все что из БД выкачалось.
219  Qt / Многопоточное программирование, процессы / Re: Очень многопоточная архитектура приложения. : Май 16, 2018, 18:48
Какой ответ Вы хотите получить?
Если программа работает и хорошо себя чувствует, то, возможно, такой подход оправдан, так как прост и относительно надежен. Это с практической точки зрения.
Если смотреть с технической или академической точки зрения, то чем больше потоков, тем хуже себя чувствует диспетчер ОС.
Если у Вас задачи связанны с высокой производительностью и большими нагрузками, то имхо такой подход неприемлем, лучше посмотреть в сторону корутин буста, на std::future или еще куда-нибудь.
В общем, ответ зависит от критериев разумности в рамках решения конкретной задачи.
Пофантазируем...
К примеру есть 8 нитей (QList<QThread>). Есть 32 объекта (SomeWorker), которые должны обрабатывать свои слоты, не мешаясь друг другу.
В начальный момент времени я по какой то логике на каждую нить вешаю по 4 объекта.
Рандомно объекты начинают нагружаться.
Настает момент времени, когда на одной нитке объекты начинают мешать друг другу, следовательно какой то из объектов желательно в соседнюю перекинуть.
Задача в том, как найти наименее нагруженную нитку?
Пока смутно маячит решение в SomeWorker делать а-ля флажок (в каждом слоте?) работает конкретный экземпляр или "курит".
Тогда зная весь массив SomeWorker-ов можно пробежаться и найти нитку с наименьшим/наибольшим кол-вом работающих.
Можно ввести "веса" нагрузки для каждого SomeWorker-а.
Тогда берем наиболее загруженный поток, выдергиваем из него N SomeWorker-ов и кидаем в наименее загруженный.
Ну вот как то так...
М.б. у кого то еще какие мысли будут.
220  Qt / Многопоточное программирование, процессы / Re: Очень многопоточная архитектура приложения. : Май 15, 2018, 21:13
Я извиняюсь, может вопрос не так задал?
Или все же нормальная практика делать для отдельной логики отдельную нить?
221  Qt / Многопоточное программирование, процессы / Очень многопоточная архитектура приложения. : Май 07, 2018, 20:04
Есть некоторое приложение, с большим количеством разнообразных логик: БД, сеть, бизнес-логики N штук, логирование 4 вида.
До некоторого времени разрабатывалось по принципу: "в любой не понятной ситуации создавай отдельный QThread и суй в него свою очередную логику".
Итого, имеем: на БД создается в районе 50 нитей (много подключений, каждое в своем потоке), на сеть около 10 (здесь пул потоков, одна нить несколько подключений обслуживает), вся остальная логика еще на полтинничек тянет.
Делалось это с той целью, что бы одна "логическая единица" не мешала и не лочила работы других, потому как сервер и должен обслуживать клиентов в почти онлайн-режиме.
Вопрос вот в чем: стоит ли продолжать в таком духе и когда пора остановится?
Про пулы потоков в курсе, но есть сложности в определении свободной нити, что бы не лочить при тяжелых вычислениях.
Страниц: 1 ... 13 14 [15]

Страница сгенерирована за 0.051 секунд. Запросов: 23.