【问题标题】:POSIX Thread Stack Memory - Can we have varying stack sizes and the safety issues?POSIX 线程堆栈内存 - 我们可以有不同的堆栈大小和安全问题吗?
【发布时间】:2012-03-24 02:03:09
【问题描述】:

我有几个关于 POSIX 线程堆栈大小及其安全问题的问题:

A) 我们可以有不同的堆栈大小(对于每个线程集,使用:pthread_attr_getstacksize)?

B) 当一个线程死亡(分离/退出)时,操作系统会回收它的内存页面吗?

C) 如果它们在虚拟内存映射上碰巧彼此相邻,一个线程能否继续写入另一个线程堆栈段?

【问题讨论】:

    标签: multithreading stack pthreads


    【解决方案1】:

    A) 是的,当然,这就是 pthread_attr_setstacksize 的目的。

    B) 是的,调用pthread_detachpthread_join 会导致线程资源在终止时被回收。

    C) 理论上是的,但由于在大多数系统上堆栈向后增长(从高地址到低地址),您必须进行某种缓冲区溢出才能摆脱当前的堆栈空间。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2014-06-04
      相关资源
      最近更新 更多