POSIX线程堆栈内存 - 我们可以有不同的堆栈大小和安全问题吗?

时间:2012-03-06 15:09:35

标签: multithreading stack pthreads

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

C)理论上是的,但是因为在大多数系统上堆栈都向后增长(从高地址到低地址),你必须做一些缓冲区溢出才能离开你当前的堆栈空间。