linux默认进程栈大小,c – 为程序全局设置Linux上的默认堆栈大小

所以我注意到

linux上线程的默认堆栈大小是8MB(如果我错了,请纠正我),顺便说一句,

Windows上的1MB.这对我的应用来说非常糟糕,因为在4核处理器上意味着64 MB空间仅用于线程!最糟糕的是,我每个线程永远不会使用超过100kb的堆栈(我滥用堆很多;)).

我现在的解决方案是限制线程的堆栈大小.但是,我不知道如何移植.只是为了上下文,我正在使用Boost.Thread来满足我的线程需求.我很喜欢#ifdef地狱,但我想知道如何轻松地做到这一点.

基本上,我想要这样的东西(windows_ *在windows版本上链接,而posix_ *在linux版本下链接)

// windows_stack_limiter.c

int limit_stack_size()

{

// Windows impl.

return 0;

}

// posix_stack_limiter.c

int limit_stack_size()

{

// Linux impl.

return 0;

}

// stack_limiter.cpp

int limit_stack_size();

static volatile int placeholder = limit_stack_size();

我如何充实这些功能?或者,或者,我只是完全错了吗?记住我无法控制实际的线程创建(在Windows上没有新的paraT到CreateThread),因为我正在使用Boost.Thread.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值