Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

รับและตั้งค่าขนาดสแต็กของแอตทริบิวต์เธรดใน C


ในการรับและตั้งค่าขนาดสแต็กของแอตทริบิวต์เธรดใน 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