Промяна на размера на нишката на Delphi в линеен код

Ето моя проблем:

Текущите ми нишки са създадени по подразбиране с 1024 kb, когато обикновено се нуждая от по-малко от 50 kb.
Има ли начин да параметризирам размера му чрез кодиране? Можех да намеря начин да го променя само чрез менюто.

Благодаря предварително.


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, който трябва да бъде извикан, за да използва размера на стека по подразбиране за изпълнимия файл. Това по подразбиране е 1MB за изпълним файл на Delphi (както отбелязахте). Въпреки че можете да промените тази стойност (*) чрез опциите за свързване (максимум размер на стека), или чрез съответната директива на компилатора, което ще има ефект върху всички нишки, които използват стека по подразбиране в приложението (главна, TThread на трета страна, ...).

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

(*) Стойността, която ще бъде запазена за стека на нишката, Te Waka o Pascal има статия, показваща ефектите от използването на различни стойности.

person Sertac Akyuz    schedule 21.03.2014