Количество QThread потоков ограничено |
Здравствуйте, гость ( Вход | Регистрация )
Количество QThread потоков ограничено |
alle-gro |
27.6.2009, 21:26
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.6.2009 Пользователь №: 859 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет всем,
столкнулся с неприятным явлением. Не могу получить больше чем 999 одновремено работающих потоков. 999 - это для потоков, которые не имеют очередь своих сообщений. Для потоков с очередью (тип exec()) - лимит 996. От количества памяти на компьютере не зависит. Нашел статью, где говорится что в Windows можно открыть 2000 потоков на 1 процесс, почему в Qt в половину меньше, кто-нибудь знает ответ на этот вопрос? Вот взял код и Qt примеров: Не осуждайте за грязь, просто важен сам факт наличия ограничения. |
|
|
Litkevich Yuriy |
27.6.2009, 22:02
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
alle-gro, почитай вот эту тему: Boost thread - ограниченное количество потоков?, непонятное ограничение, не связанное с ресурсами системы
Там довольно основательное иследование. |
|
|
alle-gro |
27.6.2009, 22:19
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.6.2009 Пользователь №: 859 Спасибо сказали: 0 раз(а) Репутация: 0 |
alle-gro, почитай вот эту тему: Boost thread - ограниченное количество потоков?, непонятное ограничение, не связанное с ресурсами системы Там довольно основательное иследование. Да, спасибо за ссылку, однако, нашел там подтверджение тому, что уже видел. Действительно кол-во потоков зависит от размера стэка для каждого потока, по-умолчанию в windows 1M. Тогда, используя функцию setStackSize(), по-идее, я должен бы получить хоть какой-то результат. Но уменьшение стэка в Windows ни к чему не привело. Здесь говорится, что в Linux- е можно как-то уменьшить размер стэка на поток, а вот что с Windows? |
|
|
ViGOur |
28.6.2009, 10:47
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
|
|
|
alle-gro |
29.6.2009, 10:18
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.6.2009 Пользователь №: 859 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здесь говорится, что в Linux- е можно как-то уменьшить размер стэка на поток, а вот что с Windows? В видовс тоже можно, только это делается в реестре.Смотри по ссылке выше, приведенной Litkevich Yuriy, мой 2 пост. Да, большое спасибо, вижу, проверю, доложу о результатах В видовс тоже можно, только это делается в реестре. Смотри по ссылке выше, приведенной Litkevich Yuriy, мой 2 пост. Перечитал еще раз утверждение, получается, что размером сека потока рулит только линковщик, через реестр другими величинами рулят. Все сказанное в статье относится к VS. А вот как рулить линковщиком в Qt, можно ли там ему указать меньший размер стека? Думаю тот факт, что для VS рапортуют 2000 потоков, а в Qt это число 1000 и указывет, что default значение размера сека в Qt в 2 раза больше, выделяется, чем у VS проекта. |
|
|
Litkevich Yuriy |
29.6.2009, 10:30
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
SABROG |
29.6.2009, 10:41
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
alle-gro |
29.6.2009, 15:39
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.6.2009 Пользователь №: 859 Спасибо сказали: 0 раз(а) Репутация: 0 |
Не верю, не думаю, что Qt что то новое изобрели, это кто ж из obj файлов сшивает приложение, адреса функций раздает и.т.д ... вот смотрю в make файл и вижу LINK = g++, что-то мне подсказывает, что это линкощик.... |
|
|
AD |
29.6.2009, 15:50
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Не верю, не думаю, что Qt что то новое изобрели, это кто ж из obj файлов сшивает приложение, адреса функций раздает и.т.д ... вот смотрю в make файл и вижу LINK = g++, что-то мне подсказывает, что это линкощик.... Да, отдельно поставляемый компилятор. Например, из MINGW, или же из CYGWIN! Или вообще отдельный: g++, gcc, link, gdb! |
|
|
alle-gro |
29.6.2009, 16:03
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 27.6.2009 Пользователь №: 859 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да, отдельно поставляемый компилятор. Например, из MINGW, или же из CYGWIN! Или вообще отдельный: g++, gcc, link, gdb! А, ну это придирка , ... Я как-то Qt рассматриваю, как одно целое, начиная с 4.5. Оно даже IDE свое стало иметь, а компилятор, линковщик, дебаггер у нее, для windows, например, тоже рекомендованные из mingw пакета. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 19:43 |