Threads создается но не запускается

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Threads создается но не запускается

Сообщение Del4ev » 29.12.2009 22:05:42

Здравствуйте ребята и девчата,
не могу понять в чем проблема, может подскажете.

Lazarus 0.9.28.2 / FPC 2.2.4 / Windows XP (из под VirtualBox, т.к. сама машина работает по Ubuntu, машина DualCore@2.0Ghz/4GB)

Пытаюсь создать нити (примерно около 400), каждая занимается своим делом, в основном обмен по серийному порту (COM) или через TCP/IP (synapse).
Проблема в том, нити создаются! (thread.create), но рабочих (thread.execute) всего 118!?
Нити именно создаются , try create except не вылавливает ошибок. Но рабочих не более 118 (и цифра странная какая-то).

Сначала подумал не хватает оперативки в VirtualBox, увеличил с 512 до 1024. Изменений ноль.
Потом подумал что проблема может быть из-за VirtualBox, проверил программу на стареньком pentium3/256mb. Запустилось 120! потоков, хотя создалось как обычно 400.

уже даже не знаю что и думать.

Может кто сталкивался с подобной проблемой?
Последний раз редактировалось Del4ev 29.12.2009 22:56:09, всего редактировалось 1 раз.
Del4ev
незнакомец
 
Сообщения: 2
Зарегистрирован: 29.12.2009 20:50:42

Re: Threads created but not started

Сообщение скалогрыз » 29.12.2009 22:29:47

интересно, а почему название темы на английском.

может быть проблема в том, что потоков слишком много? и для них просто не выделяется достаточно времени? может быть большая часть времени программы уходит на переключение контекста между потоками вместо их исполнения?
может быть, уменьшить количество потоков в программе?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Threads created but not started

Сообщение Del4ev » 29.12.2009 22:52:11

Да , про название извеняюсь, copy/paste пока в гоогле искал.

Загрузка процессора при 118 потоках менее 1 % , потому как каждый поток делает очень медленную/малозагруженную работу (например раз в секунду отпрос серийного порта)
Я именно хотел сделать "thread per connection" чтобы зависание одного потока не сказалось на работе других.
хотя у меня появилась идея попробовать понизить приоритет для каждого потока. Но видимо это не даст реального увеличения потоков.


в любом случае спасибо

Добавлено спустя 48 минут 15 секунд:
Re: Threads создается но не запускается
ну да, понижение приоритета ни к чему не привило
Del4ev
незнакомец
 
Сообщения: 2
Зарегистрирован: 29.12.2009 20:50:42

Re: Threads создается но не запускается

Сообщение Max Rusov » 30.12.2009 11:46:07

Проверьте размер стека на поток.

viewtopic.php?p=34689#p34689
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru