Russian Qt Forum
Ноябрь 23, 2024, 10:22
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
сколько потоков следует использовать
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: сколько потоков следует использовать (Прочитано 15090 раз)
qate
Супер
Offline
Сообщений: 1177
сколько потоков следует использовать
«
:
Январь 29, 2015, 12:33 »
продумываю архитектуру приложения (обмен с сетевыми устройствами, типа опрос)
удобным видится использование множества потоков (т.е. 1 поток на работу по устройству)
но если устройств много, то и количество потоков растет (обычно до 100 устройств, но ограничу в 500)
тест QThread показал что можно создать 490 потоков, а если сделать setStackSize(PTHREAD_STACK_MIN), то чуть более 1000 (но там уже на общее количество открытых файлов ограничение, наверно можно увеличить)
стоит ли отказаться от такой архитектуры и выдумывать очередь на все устройства, работающею из одного потока ?
Записан
Bepec
Гость
Re: сколько потоков следует использовать
«
Ответ #1 :
Январь 29, 2015, 12:46 »
А я ещё больше вас разочарую - примерное количество потоков в одном процессе не более 100. Более точная цифра зависит от ОС/железа. К примеру i7 на Win 7 в полной комплектации позволяет только 63 потока.
не страдайте. Обмен с сетевыми устройствами-опрос можно делать в одном потоке, одним менеджером. Тот же опрос по очереди будет не менее эффективен.
PS а как вы QThread проверяли? Пустых насоздавали?
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: сколько потоков следует использовать
«
Ответ #2 :
Январь 29, 2015, 12:56 »
Цитата: Bepec от Январь 29, 2015, 12:46
А я ещё больше вас разочарую - примерное количество потоков в одном процессе не более 100. Более точная цифра зависит от ОС/железа. К примеру i7 на Win 7 в полной комплектации позволяет только 63 потока.
Что за глупости?
Записан
Bepec
Гость
Re: сколько потоков следует использовать
«
Ответ #3 :
Январь 29, 2015, 13:05 »
Небольшая неточность - это для x86 процесса.
А так вот статейка для ознакомления -
http://blogs.technet.com/b/mark_russinovich/archive/2009/11/02/3290815.aspx
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: сколько потоков следует использовать
«
Ответ #4 :
Январь 29, 2015, 13:07 »
Цитата: Bepec от Январь 29, 2015, 13:05
Небольшая неточность - это для x86 процесса.
А что именно вы этим уточнили?
Это глупости и для x86:
Цитата: Bepec от Январь 29, 2015, 12:46
А я ещё больше вас разочарую - примерное количество потоков в одном процессе не более 100. Более точная цифра зависит от ОС/железа. К примеру i7 на Win 7 в полной комплектации позволяет только 63 потока.
Записан
qate
Супер
Offline
Сообщений: 1177
Re: сколько потоков следует использовать
«
Ответ #5 :
Январь 29, 2015, 13:07 »
Цитата: Bepec от Январь 29, 2015, 12:46
PS а как вы QThread проверяли? Пустых насоздавали?
QThread и класс к нему который в нем живет
но проблема именно в создании - в коде QThread где вызов pthread_create, уменьшил стек - стало получше
очередь мутно городить, повторы всякие, вот потому и не хочу ее делать (не говорю что нельзя)
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: сколько потоков следует использовать
«
Ответ #6 :
Январь 29, 2015, 13:09 »
Цитата: qate от Январь 29, 2015, 13:07
очередь мутно городить, повторы всякие, вот потому и не хочу ее делать (не говорю что нельзя)
Все равно, делать столько потоков не нужно.
Работы для них никакой нет, а ресурсы на переключение будут тратится много.
Сделайте несколько ниток, например, по одной нитке на 50 - 100 устройств.
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: сколько потоков следует использовать
«
Ответ #7 :
Январь 29, 2015, 13:17 »
Верес, правильно, что вы убрали сообщение.
Лучше сначала сами прочтите эту статью, а еще лучше попробуйте сами.
А qate уже дважды вам открыто написал, как можно (и под вендой в том числе) запустить больше потоков.
Записан
qate
Супер
Offline
Сообщений: 1177
Re: сколько потоков следует использовать
«
Ответ #8 :
Январь 29, 2015, 13:18 »
Цитата: Old от Январь 29, 2015, 13:09
Сделайте несколько ниток, например, по одной нитке на 50 - 100 устройств.
а смысл так делать ? на процессоры потоки раскидать ?
если и решу одну очередь, то один поток ее и обработает
но вот не хочу городить очередь - логика становится путаная
в потоке как хорошо - линейный процесс опроса устройства, а в очереди нужно смотреть ответил, нет, повторить - запутаюсь
Записан
Bepec
Гость
Re: сколько потоков следует использовать
«
Ответ #9 :
Январь 29, 2015, 13:20 »
Приведённая мною цифра была выдана как раз тестлимитом года полтора назад на приведённой мной конфигурации.
Сейчас перепроверил - теперь выдаёт около 2к. Что произошло - хз
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: сколько потоков следует использовать
«
Ответ #10 :
Январь 29, 2015, 13:20 »
Цитата: qate от Январь 29, 2015, 13:18
но вот не хочу городить очередь - логика становится путаная
в потоке как хорошо - линейный процесс опроса устройства, а в очереди нужно смотреть ответил, нет, повторить - запутаюсь
Оформите этот линейный процесс опроса как функцию и запускайте ее в потоке. Нет никакой разницы.
Какие очереди вас пугают?
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: сколько потоков следует использовать
«
Ответ #11 :
Январь 29, 2015, 13:21 »
Цитата: Bepec от Январь 29, 2015, 13:20
Приведённая мною цифра была выдана как раз тестлимитом года полтора назад на приведённой мной конфигурации.
Сейчас перепроверил - теперь выдаёт около 2к. Что произошло - хз
Вы забыли цифры из статьи и все наладилось.
Записан
qate
Супер
Offline
Сообщений: 1177
Re: сколько потоков следует использовать
«
Ответ #12 :
Январь 29, 2015, 13:31 »
Цитата: Old от Январь 29, 2015, 13:20
Оформите этот линейный процесс опроса как функцию и запускайте ее в потоке. Нет никакой разницы.
Какие очереди вас пугают?
линейный процесс на каждое устройство в функцию и в поток ? так это и будет 100 потоков )
пугает внесение логики в очередь
собственно для тестов я уже написал эту очередь ранее, но там много чего не хватает (повторов, событий, промежуточных состояний опроса)
поэтому я и подумал о потоках как иной вариант для рассмотрения
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: сколько потоков следует использовать
«
Ответ #13 :
Январь 29, 2015, 13:33 »
Может Верес имел ввиду ограничение в 63 (MAXIMUM_WAIT_OBJECTS) хендлов для функций типа WaitForMultipleObjects?
Записан
ArchLinux x86_64 / Win10 64 bit
Bepec
Гость
Re: сколько потоков следует использовать
«
Ответ #14 :
Январь 29, 2015, 13:41 »
Я имел в виду что при запуске testLimit -t на i7 он выдал число 63.
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...