POSIX线程通常共享地址空间。但每个线程都有自己的堆栈。如何分配该堆栈。我已经查看了glibc中的allocate_stack函数,但我并不了解它。 理论上是否可以访问另一个pthread的堆栈,因为地址空间是共享的?
提前致谢!
答案 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