在Linux进程中,每个线程都有自己的堆栈。除此之外,还有哪些是特定于每个线程的?我已经阅读了一些诸如文件分配表等内容...能否有人提供一个特定于线程的事物列表以及它们在内存中的排列方式。
其次,我注意到当我为一个线程分配堆栈(见下面的代码)时,线程函数中第一个变量的地址与我分配的堆栈地址(stackAddr)相差很多字节。我认为这是因为堆栈顶部是分配的堆栈内存的结束地址,因为局部变量地址和分配的堆栈地址的差值大约是堆栈大小(STACKSIZE)。换句话说,它看起来像是从底部向顶部增长。
其次,我注意到当我为一个线程分配堆栈(见下面的代码)时,线程函数中第一个变量的地址与我分配的堆栈地址(stackAddr)相差很多字节。我认为这是因为堆栈顶部是分配的堆栈内存的结束地址,因为局部变量地址和分配的堆栈地址的差值大约是堆栈大小(STACKSIZE)。换句话说,它看起来像是从底部向顶部增长。
pthread_attr_init( &attr[tid] );
stackAddr = malloc(STACKSIZE);
pthread_attr_setstack( &attr, stackAddr, STACKSIZE );