در مورد تعداد 2000 ترد در نرم افزارها يه زماني من اين مشكل را داشتم يعني با كامپايلر دلفي 7 توي يك سيستم 32 بيتي نياز داشتم به تعداد بيش از 50 هزارتا ترد كه متوجه شدم به صورت پيش فرض تابع CreateThread را وقتي در يك سيستم عامل 32 بيتي صدا ميزنيم عملا تا تعداد حدود 2000 تا بيشتر نميشه ساخت ( اين همين موردي هست كه object pascal بهش اشاره كرده )
اين مورد شايد نشه اسمشو گذاشت باگ ، شايد بشه اسمشو گذاشت حواس پرتي طراحاي اين داستان، شايدم دليلي نميديدن براي تعداد بيشتر تردها در يك نرم افزار :)
يه سرچي زدم ديدم با تغيير پارامترها به شكل زير
CreateThread( nil,20480, @ThreadProc, nil,CREATE_SUSPENDED or STACK_SIZE_PARAM_IS_A_RESERVATION , thid) ;
اين محدوديت 2هزار تايي تا حدود 30 هزارتا برطرف شد.
و البته بعدش هم يه نكته عجيب برخورد كردم يعني همين برنامه 32بيتي كه تا 30هزارتا روي سيستم عامل 32بيتي رفته بود بالا ، روي يك سيستم 64 بيتي با همين ساختار نتونست بيشتر از 5-6 هزارتا ترد بسازه...
خلاصه بيخيالش شدم آخرش و به همين 30 هزارتا بسنده كردم :)