fpc создает потоки средствами APIWin Delphi тоже, но в Delphi до 1000 нитей без проблем.
где это ограничение в FPC, просмотрел исходники по диагонали, ограничения не нашел...
не вижу ничего зазорного в использовании большого (120+) количества нитей приложением, хватало бы ресурсов системы...
tthread, не получается запустить больше ~120 нитей
Модератор: Модераторы
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
может кто собирёт под delphi простой пример использующий более 100 нитей(потоков)
Будет время "поковыряю" OllyDbg
PS: просьба перед создание потока(ов) вызвать MessageBoxA(чтобы сразу найти нужное место
)
про исходники тоже не забываем
Будет время "поковыряю" OllyDbg
PS: просьба перед создание потока(ов) вызвать MessageBoxA(чтобы сразу найти нужное место
про исходники тоже не забываем
Если сервер реализует свой обмен данными поверх "чистого" tcp - то вообще непонятно, зачем весь сыр-бор с нитями, чтобы ожидать ответа от sql сервера? Уж увольте, лучше было бы сделать обычный диспетчер очереди запросов к БД, а нити "сэмулировать" в асинхронном режиме, не замучивая менеджер памяти потокобезопасными методами.
Не забывайте - ObjectPascal-подобные системы (в том числе C#
) поддерживают динамические массивы записей произвольной структуры и объема. Вам, фактически, не нужен стек под каждую "нить", просто добавляйте в динамический массив еще одну запись при подключении пользователя. А дальше стройте все на обработке TServerSocket-событий.
Не забывайте - ObjectPascal-подобные системы (в том числе C#
Да, ситуация непонятная. Под Delphi запускается сколько хочешь потоков (пробовал до 1000) под FPC - 120 и все, ошибка с кодом 8.
Возможно, это как то связано с реализацией threadvar переменных в FPC?...
Возможно, это как то связано с реализацией threadvar переменных в FPC?...
в delphi размер стэка приложения, по-умолчанию, равен 1 мегабайт.
поставьте такой же при компиляции FPC
будем вам счастье! (в Лазаре: Compiler Options->Other->Custom Options)
поставьте такой же при компиляции FPC
Код: Выделить всё
-Cs1048576будем вам счастье! (в Лазаре: Compiler Options->Other->Custom Options)
скалогрыз писал(а):в delphi размер стэка приложения, по-умолчанию, равен 1 мегабайт.
поставьте такой же при компиляции FPCКод: Выделить всё
-Cs1048576
будем вам счастье! (в Лазаре: Compiler Options->Other->Custom Options)
Спасибо
