tthread, не получается запустить больше ~120 нитей

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

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

Re: tthread, не получается запустить больше ~120 нитей

Сообщение alaken » 13.05.2010 13:28:23

fpc создает потоки средствами APIWin Delphi тоже, но в Delphi до 1000 нитей без проблем.
где это ограничение в FPC, просмотрел исходники по диагонали, ограничения не нашел...

не вижу ничего зазорного в использовании большого (120+) количества нитей приложением, хватало бы ресурсов системы...
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: tthread, не получается запустить больше ~120 нитей

Сообщение coyot.rush » 13.05.2010 21:14:34

может кто собирёт под delphi простой пример использующий более 100 нитей(потоков) :?:
Будет время "поковыряю" OllyDbg :idea:
PS: просьба перед создание потока(ов) вызвать MessageBoxA(чтобы сразу найти нужное место :) )
про исходники тоже не забываем :roll:
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: tthread, не получается запустить больше ~120 нитей

Сообщение Timid » 14.05.2010 00:40:25

Если сервер реализует свой обмен данными поверх "чистого" tcp - то вообще непонятно, зачем весь сыр-бор с нитями, чтобы ожидать ответа от sql сервера? Уж увольте, лучше было бы сделать обычный диспетчер очереди запросов к БД, а нити "сэмулировать" в асинхронном режиме, не замучивая менеджер памяти потокобезопасными методами.
Не забывайте - ObjectPascal-подобные системы (в том числе C# :) ) поддерживают динамические массивы записей произвольной структуры и объема. Вам, фактически, не нужен стек под каждую "нить", просто добавляйте в динамический массив еще одну запись при подключении пользователя. А дальше стройте все на обработке TServerSocket-событий.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: tthread, не получается запустить больше ~120 нитей

Сообщение Max Rusov » 14.05.2010 10:29:46

Да, ситуация непонятная. Под Delphi запускается сколько хочешь потоков (пробовал до 1000) под FPC - 120 и все, ошибка с кодом 8.
Возможно, это как то связано с реализацией threadvar переменных в FPC?...
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: tthread, не получается запустить больше ~120 нитей

Сообщение скалогрыз » 14.05.2010 11:12:08

в delphi размер стэка приложения, по-умолчанию, равен 1 мегабайт.

поставьте такой же при компиляции FPC
Код: Выделить всё
-Cs1048576

будем вам счастье! (в Лазаре: Compiler Options->Other->Custom Options)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: tthread, не получается запустить больше ~120 нитей

Сообщение alaken » 28.05.2010 08:50:15

скалогрыз писал(а):в delphi размер стэка приложения, по-умолчанию, равен 1 мегабайт.

поставьте такой же при компиляции FPC
Код: Выделить всё
-Cs1048576

будем вам счастье! (в Лазаре: Compiler Options->Other->Custom Options)


Спасибо
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Пред.

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

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

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

Рейтинг@Mail.ru