Изменение размера потока Delphi в линейном коде

Вот моя проблема:

Мои текущие потоки создаются по умолчанию с размером 1024 КБ, тогда как обычно мне требуется менее 50 КБ.
Есть ли способ параметризовать его размер с помощью кода? Я смог найти способ изменить его только через меню.

Заранее спасибо.


person Filipe.Fonseca    schedule 21.02.2014    source источник
comment
Вы можете указать размер стека, если используете BeginThread, с соответствующими CreationFlags.   -  person Sertac Akyuz    schedule 21.02.2014
comment
Вот и все. Спасибо за помощь!   -  person Filipe.Fonseca    schedule 21.02.2014


Ответы (1)


Невозможно указать размер стека с помощью TThread. Путь кода создания потока TThread приводит к вызову CreateThread API для использования размера стека по умолчанию для исполняемого файла. По умолчанию это 1 МБ для исполняемого файла Delphi (как вы заметили). Хотя вы можете изменить это значение (*) с помощью параметров компоновщика (максимум размер стека) или через соответствующую директиву компилятора, это повлияет на все потоки, которые используют стек по умолчанию в приложении (основной, сторонний TThread, ...).

Если вы можете обойтись без TThread, вы можете использовать функцию RTL BeginThread для пусть StackSize, который вы передаете, будет использоваться, когда вы включаете STACK_SIZE_IS_A_RESERVATION в CreationFlags.

(*) Значение, которое будет зарезервировано для стека потоков, Te Waka o Pascal есть статья, в которой показаны результаты использования разных значений.

person Sertac Akyuz    schedule 21.03.2014