Linux中线程栈测试

来源:互联网 发布:淘宝双11怎么修改价格 编辑:程序博客网 时间:2024/05/20 16:40
#include<stdio.h>#include<stdlib.h>//#include<types.h>//#include<stat.h>#include<pthread.h>#include<string.h>#include<limits.h>void* thread_func(void* arg){    printf("The thread is here\n");    char p[1024*1024*7];    int i = 1024*1024*7;    /*确定分配内存成功了*/    while(i--)        p[i]= 3;    printf("Get 7M Memory!!!\n");    char p2[1024*1024*3];    memset(p2, 0, sizeof(char)*(1024*1024*3));    printf("Get More Memory!!!\n");    pthread_exit(NULL);}int main(void){    pthread_t thread_id;    pthread_attr_t thread_attr;    size_t stack_size;    int status;    status = pthread_attr_init(&thread_attr);    if(status != 0)        return status;    status = pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_JOINABLE);    if(status != 0)        return status;    /*未设置线程栈大小之前的大小*/    status = pthread_attr_getstacksize(&thread_attr, &stack_size);    printf("Default stack size is %u; minimum is %u\n", stack_size, PTHREAD_STACK_MIN);    /*未改变线程栈大小之前创建线程*///  status = pthread_create(&thread_id, &thread_attr, thread_func, NULL);//  if(status != 0)//      return status;//  sleep(5);    /*设置线程栈的大小*/    status = pthread_attr_setstacksize(&thread_attr, PTHREAD_STACK_MIN*1024);    if(status != 0)        return status;    /*输出设置线程栈大小数值*/    status = pthread_attr_getstacksize(&thread_attr, &stack_size);    if(status != 0)        return status;    printf("After set: stack size is %u; minimum is %u\n", stack_size, PTHREAD_STACK_MIN);    status = pthread_create(&thread_id, &thread_attr, thread_func, NULL);    if(status != 0)        return status;    sleep(5);    return 0;}
原创粉丝点击