社区
Linux/Unix社区
帖子详情
请问Linux下线程开销为什么这么大?一个线程要占用近10M内存
cpio
2011-07-21 05:53:24
32位机器,当创建到200多个线程的时候,虚拟内存占用达到3G,此时再也不能创建新线程了。
有没有系统设置可以减小线程开销?Windows下似乎线程基本不占内存。
...全文
737
8
打赏
收藏
请问Linux下线程开销为什么这么大?一个线程要占用近10M内存
32位机器,当创建到200多个线程的时候,虚拟内存占用达到3G,此时再也不能创建新线程了。 有没有系统设置可以减小线程开销?Windows下似乎线程基本不占内存。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jackyjkchen
2011-07-21
打赏
举报
回复
[Quote=引用 7 楼 cpio 的回复:]
难道Windows是所有线程共享栈?
[/Quote]
windows默认栈1M
cpio
2011-07-21
打赏
举报
回复
难道Windows是所有线程共享栈?
cpio
2011-07-21
打赏
举报
回复
用ulimit -s 1024就好了,默认是8196,所以每次接近10M。
不知道默认为什么这么大,据说Solaris才几百k。
jackyjkchen
2011-07-21
打赏
举报
回复
[Quote=引用 4 楼 cpio 的回复:]
使用QT4.7.2测试的,创建线程使用的QThread,代码很简单,从QThread继承,在run虚函数里面写的
while (true)
{
sleep(100);
}
然后开始创建这个QThread。
按jackyjkchen说的,是不是新线程会跟初始进程占用的内存一样多?那这样的话,如果初始进程占用内存多的话,它创建的新线程就会占得多?
[/Quote]
你默认栈开了多大,可能线程继承了进程的栈设置
cpio
2011-07-21
打赏
举报
回复
使用QT4.7.2测试的,创建线程使用的QThread,代码很简单,从QThread继承,在run虚函数里面写的
while (true)
{
sleep(100);
}
然后开始创建这个QThread。
按jackyjkchen说的,是不是新线程会跟初始进程占用的内存一样多?那这样的话,如果初始进程占用内存多的话,它创建的新线程就会占得多?
昵称很不好取
2011-07-21
打赏
举报
回复
从程序方面找找原因吧
xunxun
2011-07-21
打赏
举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
Linux下的线程就是一种进程,所以Linux线程的开销是极大的。Windows是原生的线程。
但是你说200个线程就3G内存有点扯,是不是你每个线程的堆栈开太大了?
Linux下跑几百个进程都是常见的
[/Quote]
我也觉得是每个线程的堆栈
不过为啥说Linux下线程就是一种进程呢?OpenMP基于pthreads的,运行时也只看到一个进程啊
jackyjkchen
2011-07-21
打赏
举报
回复
Linux下的线程就是一种进程,所以Linux线程的开销是极大的。Windows是原生的线程。
但是你说200个线程就3G内存有点扯,是不是你每个线程的堆栈开太大了?
Linux下跑几百个进程都是常见的
Linux
线程
池
本文介绍了
Linux
环境下
线程
池的设计原理与实现方法,重点分析了为何使用
线程
池来优化多
线程
开销
,通过任务队列、执行
线程
和管理组件协同工作,有效降低频繁创建/销毁
线程
带来的性能损耗,并提升服务器在高并发场景下的稳定性与资源利用率。
Linux
:
线程
(thread)
本文深入讲解
Linux
下
线程
的基本概念、与进程的本质区别、创建与消亡机制、调度模型,重点剖析pthread库核心API(pthread_create、pthread_exit、pthread_join、pthread_detach等)的用法及语义,并说明
线程
栈管理、资源隔离与共享特性。同时提供实用命令(如ps -eLo)用于查看
线程
运行状态,聚焦多
线程
编程在系统级开发中的关键技术要点。
嵌入式
Linux
线程
监控实战指南
本文聚焦嵌入式
Linux
环境下多
线程
程序的资源监控,涵盖CPU
占用
率、
内存
使用及调度延迟三大核心指标;介绍基础工具(top/ps)、/proc文件系统解析、轻量级工具选型,并给出Shell脚本与API编程两种自动化监控方案;针对实时性、多核负载均衡与
内存
泄漏等高级场景提出实用对策。
Linux
软件编程:
线程
和进程间通信
本文深入剖析
Linux
下
线程
机制及其与进程的本质差异,涵盖
线程
生命周期管理、属性控制(JOINABLE/DETACHED)、
线程
间共享
内存
通信及同步原语(互斥锁、信号量),并分析死锁成因与规避策略;同时介绍进程间通信(IPC)核心机制,包括无名管道与有名管道(FIFO)的工作原理与适用场景。
13. 多
线程
编程
本文围绕
Linux
系统下
线程
和进程展开。先阐述了
线程
和进程的概念、区别,包括定义、资源共享、独立性、
开销
和通信等方面。接着介绍
Linux
线程
模型、
线程
库,如NPTL优势。还讲解了创建和结束
线程
、
线程
属性,以及POSIX信号量、互斥锁、条件变量等
线程
同步机制,并给出相关实战案例。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章