📜  获取堆栈大小并在C中设置线程属性的堆栈大小

📅  最后修改于: 2021-05-26 02:31:14             🧑  作者: Mango

先决条件:多线程

句法 :

// to get size of stack
int pthread_attr_getstacksize(const pthread_attr_t* restrict attr,
                                          size_t* restrict stacksize);
  
// to set size of stack
int pthread_attr_setstacksize(pthread_attr_t* attr, size_t stacksize);


pthread_attr_getstacksize():
它用于获取线程堆栈大小。 stacksize属性给出分配给线程堆栈的最小堆栈大小。当成功运行时,它给出0,否则给出任何值。

第一个参数–它带有pthread属性。
第二个参数–它接受一个变量,并给出线程属性的大小。

pthread_attr_setstacksize():
它用于设置新线程的堆栈大小。 stacksize属性给出分配给线程堆栈的最小堆栈大小。成功运行后,如果错误给出任何值,则给出0,否则返回0。

第一个参数–它带有pthread属性。
第二个参数–占用新堆栈的大小(以字节为单位)

#include 
#include 
#include 
  
int main()
{
  
    // for takes the size of threads stack
    size_t stksize;
  
    // attribute declaration
    pthread_attr_t atr;
  
    // it gets the threads stack size and give 
    // value in stksize variable
    pthread_attr_getstacksize(&atr, &stksize);
  
    // print the current threads stack size
    printf("Current stack size - > %d\n", stksize);
  
    // then set the new threads stack size
    pthread_attr_setstacksize(&atr, 320000034);
    pthread_attr_getstacksize(&atr, &stksize);
  
    // print the new stack size
    printf("New stack size-> %d\n", stksize);
    return 0;
}

输出 :

Current stack size - > 4196464
New stack size-> 320000034
 
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。