在glibc中分配pthread堆栈

时间:2015-03-17 13:59:04

标签: c linux linux-kernel pthreads posix

POSIX线程通常共享地址空间。但每个线程都有自己的堆栈。如何分配该堆栈。我已经查看了glibc中的allocate_stack函数,但我并不了解它。 理论上是否可以访问另一个pthread的堆栈,因为地址空间是共享的?

提前致谢!

1 个答案:

答案 0 :(得分:1)

基本上,它是可能的。 例如:

#include        <signal.h>
#include        <stdio.h>
#include <pthread.h>

void * f(void * arg)
{
    int * p = (int*)arg;
    *p = 10;
    return NULL;
}

int main()
{
    pthread_t t;
    int var = 5;
    pthread_create(&t, NULL,f,&var);
    pthread_join(t,NULL);
    printf("var=%d\n",var);
    return (0);
}

输出将是&#34; var = 10&#34;而不是5