gpt4 book ai didi

c - 堆栈旁边的线程有什么用

转载 作者:IT王子 更新时间:2023-10-29 00:25:32 24 4
gpt4 key购买 nike

在 Linux 进程中,每个线程都有自己的堆栈。除此之外,每个线程还有什么是本地的。我已经阅读了文件分配表等内容......有人可以向我提供特定于线程的内容列表以及它们在内存中的排列方式。

其次,我注意到当我为一个线程分配一个堆栈时(见下面的代码),线程函数中第一个变量的地址在我分配的堆栈地址(stackAddr )。我认为这是因为栈顶是分配的堆栈内存的结束地址,因为局部变量地址和分配的堆栈的值的差异大约是堆栈的大小(STACKSIZE )。换句话说,它看起来像是从底部向顶部生长。

pthread_attr_init( &attr[tid] );
stackAddr = malloc(STACKSIZE);
pthread_attr_setstack( &attr, stackAddr, STACKSIZE );

最佳答案

对于我能想到的第一个问题:

  • 线程编号
  • 堆栈
  • 机器寄存器
  • 线程特定变量(由 pthread_setspecific__thread 存储类设置的键/值对)
  • signal mask
  • 一组未决信号
  • 错误值

其次,是的,你是对的,在 x86 上,堆栈增长到较低的地址。因此,如果您使用 pthread_attr_setstack,该区域将从末尾开始使用。

关于c - 堆栈旁边的线程有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com