【Linux系统编程】线程堆栈大小的使用介绍
先来讲说线程内存相关的东西,主要有下面几条:
- 进程中的所有的线程共享相同的地址空间。
- 任何声明为 static/extern 的变量或者堆变量可以被进程内所有的线程读写。
- 一个线程真正拥有的唯一私有储存是处理器寄存器。
- 线程栈可以通过暴露栈地址的方式与其它线程进行共享。
#define EAGAIN 11#define ENOMEM 12 /* Out of memory */
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>//线程操作所需头文件int main(void)
{size_t stack_size = 0; //堆栈大小变量pthread_attr_t attr; //线程属性结构体变量//初始化线程属性int ret = pthread_attr_init(&attr);if(ret != 0){perror("pthread_attr_init");}//获取当前的线程栈大小ret = pthread_attr_getstacksize(&attr, &stack_size);return -1;if(ret != 0){perror("pthread_attr_getstacksize");return -1;}//打印堆栈值printf("stack_size = %dB, %dk\n", stack_size, stack_size/1024);return 0;
}
编译代码时,需要加上 -lpthread,运行结果如下:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>//线程操作所需头文件int main(void)
{size_t stack_size = 0; //堆栈大小变量pthread_attr_t attr; //线程属性结构体变量//初始化线程属性int ret = pthread_attr_init(&attr);if(ret != 0){perror("pthread_attr_init");return -1;}stack_size = 1024*20; //堆栈大小设置为20Kret = pthread_attr_setstacksize(&attr, stack_size);//设置线程堆栈大小if(ret != 0){perror("pthread_attr_getstacksize");return -1;}stack_size = 0;ret = pthread_attr_getstacksize(&attr, &stack_size);//获取线程堆栈大小//打印堆栈值printf("stack_size = %dB, %dk\n", stack_size, stack_size/1024);return 0;
}
http://www.cnblogs.com/qq78292959
http://blog.csdn.net/horstlinux
【Linux系统编程】线程堆栈大小的使用介绍相关推荐
- Linux系统编程——线程私有数据
在多线程程序中.常常要用全局变量来实现多个函数间的数据共享.因为数据空间是共享的,因此全局变量也为全部线程共同拥有. 測试代码例如以下: #include <stdio.h> #inclu ...
- linux限制堆栈大小,进程超过RedHat Enterprise Linux 6的线程堆栈大小限制?
我在RHEL 6.3上运行了几个进程,但由于某种原因,它们超出了线程堆栈大小. 例如,Java进程在启动时在运行时被赋予-Xss256k的堆栈大小,并且在实际代码中使用pthread_attr_set ...
- Linux系统编程——线程(1)
目录 线程概要 Linux内核线程实现原理 线程的共享/不共享资源 线程优缺点 线程控制原语 pthread_self pthread_create pthread_exit pthread_join ...
- Linux系统编程——线程
一.线程概念 基础 线程又称LWP:light weight process 轻量级的进程,(在linux环境下)本质仍是进程.进程:独立地址空间,拥有PCB 线程:有独立的PCB,但没有独立的地址空 ...
- Linux系统编程——线程池
http://blog.csdn.net/tennysonsky/article/details/46490099# 线程池基本原理 在传统服务器结构中,常是有一个总的监听线程监听有没有新的用户连接服 ...
- 入门Linux系统编程--网络编程
文章目录 一.网络编程 1.socket服务端代码实现(无连接客户端) 6.socket服务端代码实现(连接客户端) 7.socket客户端代码实现 8.实现双方聊天 9.多方消息收发 二.往期文章 ...
- 【Linux系统编程】线程栈大小
00. 目录 文章目录 00. 目录 01. 概述 02. 设置线程栈函数 03. 附录 01. 概述 先来讲说线程内存相关的东西,主要有下面几条: 进程中的所有的线程共享相同的地址空间. 任何声明为 ...
- 【Linux系统编程】守护进程、线程
------------->[Linux系统编程/网络编程](学习目录汇总) <-------------- 目录 1.守护进程 1.1 进程组 1.2 会话 1.3 setsid()函数 ...
- linux服务器开发二(系统编程)--线程相关
线程概念 什么是线程 LWP:Light Weight Process,轻量级的进程,本质仍是进程(在Linux环境下). 进程:独立地址空间,拥有PCB. 线程:也有PCB,但没有独立的地址空间(共 ...
最新文章
- NGINX由入门到精通:Nginx介绍
- 如何通过三视图判断立方体个数_如何通过接触角判断疏水性?疏水性与亲水性的区别...
- sublime text 3设置快捷键让html文件在浏览器打开
- cambridge ccaf potential supervisors!
- xshell连不上虚拟机linux的解决办法(用的默认NAT模式)
- 换了电脑如何使用hexo继续写博客
- iOS-保存图片到(自定义)相册步骤
- Prepared statement needs to be re-prepare
- js常用正则表达式(经典)
- inux中tail命令---用于查看文件内容
- position之属性
- 双屏幕切换成单屏,软件不显示的问题与解决方法(总结全网)
- easyrecovery免费数据恢复工具操作简单一键恢复数据
- 数据库基础知识(思维导图)
- Python画一个中国地图玩玩
- 微信支付失败-1彻底扫坑
- 阿里巴巴社招Java面试题做题记录
- 中国互联网CEO语录
- 洗礼灵魂,修炼python(56)--爬虫篇—知识补充—编码之url编码
- JAVA中创建线程的三种方法及比较
热门文章
- Jquery操作表单Select元素常用方法
- ie里的button标签的一个bug
- securecrt使用_使用securecrt提升工作效率的十个技巧
- 【数据结构总结】第二章:线性表
- 7-5 jmu-Java-03面向对象基础-05-覆盖 (3 分)
- Java黑皮书课后题第8章:*8.30(代数:解答线性方程)编写一个方法,解答下面的2*2线性方程组系统
- Java黑皮书课后题第8章:*8.25(马尔可夫矩阵)一个n*n的矩阵,如果每个元素都是正数,并且每列的元素的和为1,则成为正马尔可夫矩阵。编写下面的方法来检测矩阵是否是马尔可夫矩阵
- 配置加密_数据库密码配置项都不加密?心也太大了!
- 类方法classmethod 绑定方法
- BZOJ3473: 字符串【后缀数组+思维】