ในการรับและตั้งค่าขนาดสแต็กของแอตทริบิวต์เธรดใน C เราใช้แอตทริบิวต์เธรดต่อไปนี้:
pthread_attr_getstacksize()
ใช้สำหรับรับขนาดสแต็กเธรด แอตทริบิวต์ขนาดสแต็กให้ขนาดสแต็กขั้นต่ำที่จัดสรรให้กับสแต็กเธรด ในกรณีที่วิ่งสำเร็จ มันจะให้ 0 มิฉะนั้นจะให้ค่าใด ๆ
ต้องใช้สองอาร์กิวเมนต์ -
pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize)
- อันแรกสำหรับแอตทริบิวต์ pthread
- อันที่สองสำหรับกำหนดขนาดของแอตทริบิวต์เธรด
pthread_attr_setstacksize()
ใช้สำหรับกำหนดขนาดสแตกของเธรดใหม่ แอตทริบิวต์ขนาดสแต็กให้ขนาดสแต็กขั้นต่ำที่จัดสรรให้กับสแต็กเธรด ในกรณีที่วิ่งได้สำเร็จ มันจะให้ 0 มิฉะนั้น มันจะให้ค่าใดๆ
ต้องใช้สองอาร์กิวเมนต์ -
pthread_attr_setstacksize(pthread_attr_t *attr, size_t *stacksize)
- อันแรกสำหรับแอตทริบิวต์ pthread
- อันที่สองสำหรับกำหนดขนาดของสแต็กใหม่เป็นไบต์
อัลกอริทึม
Begin Declare stack size and declare pthread attribute a. Gets the current stacksize by pthread_attr_getstacksize() and print it. Set the new stack size by pthread_attr_setstacksize() and get the stack size pthread_attr_getstacksize() and print it. End
โค้ดตัวอย่าง
#include <stdio.h> #include <stdlib.h> #include <pthread.h> int main() { size_t stacksize; pthread_attr_t a; pthread_attr_getstacksize(&a, &stacksize); printf("Current stack size = %d\n", stacksize); pthread_attr_setstacksize(&a, 67626); pthread_attr_getstacksize(&a, &stacksize); printf("New stack size= %d\n", stacksize); return 0; }
ผลลัพธ์
Current stack size = 50 New stack size= 67626