Здравствуйте ребята и девчата,
не могу понять в чем проблема, может подскажете.
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.
уже даже не знаю что и думать.
Может кто сталкивался с подобной проблемой?
Threads создается но не запускается
Модератор: Модераторы
Threads создается но не запускается
Последний раз редактировалось Del4ev 29.12.2009 21:56:09, всего редактировалось 1 раз.
интересно, а почему название темы на английском.
может быть проблема в том, что потоков слишком много? и для них просто не выделяется достаточно времени? может быть большая часть времени программы уходит на переключение контекста между потоками вместо их исполнения?
может быть, уменьшить количество потоков в программе?
может быть проблема в том, что потоков слишком много? и для них просто не выделяется достаточно времени? может быть большая часть времени программы уходит на переключение контекста между потоками вместо их исполнения?
может быть, уменьшить количество потоков в программе?
Да , про название извеняюсь, copy/paste пока в гоогле искал.
Загрузка процессора при 118 потоках менее 1 % , потому как каждый поток делает очень медленную/малозагруженную работу (например раз в секунду отпрос серийного порта)
Я именно хотел сделать "thread per connection" чтобы зависание одного потока не сказалось на работе других.
хотя у меня появилась идея попробовать понизить приоритет для каждого потока. Но видимо это не даст реального увеличения потоков.
в любом случае спасибо
Добавлено спустя 48 минут 15 секунд:
Re: Threads создается но не запускается
ну да, понижение приоритета ни к чему не привило
Загрузка процессора при 118 потоках менее 1 % , потому как каждый поток делает очень медленную/малозагруженную работу (например раз в секунду отпрос серийного порта)
Я именно хотел сделать "thread per connection" чтобы зависание одного потока не сказалось на работе других.
хотя у меня появилась идея попробовать понизить приоритет для каждого потока. Но видимо это не даст реального увеличения потоков.
в любом случае спасибо
Добавлено спустя 48 минут 15 секунд:
Re: Threads создается но не запускается
ну да, понижение приоритета ни к чему не привило
