پاسخ: اندازه پشته PTHREAD

@meghana9490

در کد اصلاح شده ای که ارائه کرده اید، قبل از تنظیم اندازه پشته، یک بررسی اضافی برای بازیابی اندازه پشته فعلی با استفاده از تابع ()pthread_attr_getstacksize اضافه کرده اید. این یک تمرین خوب برای اطمینان از کار با اندازه پشته معتبر است.

کد همچنین مواردی را که در آن اندازه پشته درخواستی کمتر از PTHREAD_STACK_MIN باشد، با کدگذاری سخت آن به PTHREAD_STACK_MIN و تنظیم اندازه پشته با استفاده از (pthread_attr_setstacksize) رسیدگی می کند.

در بلوک else، شما سعی می‌کنید اندازه پشته را با استفاده از ()pthread_attr_setstacksize تنظیم کنید و سپس در صورت عدم موفقیت، ویژگی را با استفاده از pthread_attr_init() مجدداً مقداردهی کنید. با این حال، شرط بررسی نادرست است، زیرا pthread_attr_init() 0 را در صورت موفقیت و غیر صفر را در خطا برمی گرداند. بنابراین، شما باید از اگر (StackSize >= PTHREAD_STACK_MIN && pthread_attr_setstacksize(&attr, StackSize) != 0 && pthread_attr_init(&attr) != 0) استفاده کنید.

به طور کلی، کد اصلاح شده خوب به نظر می رسد و باید همانطور که در نظر گرفته شده است کار کند.

 

موفق باشید!




منبع: https://community.hpe.com/t5/languages-and-scripting/pthread-stack-size/m-p/7185007#M48528