c - 设置线程ID

标签 c linux gcc x86

我希望能够设置自己的线程 ID,例如,对于我在应用程序中创建的四个线程,我希望将它们的 ID 设置为 0、1、2 和 3。我知道您可以使用线程局部变量并为其分配 ID。但是,由于某种原因,我无法使用线程局部变量。您可能会说,将线程 ID 作为参数传递给线程函数可以解决问题,但在这种情况下,您需要在线程使用的每个函数中传递线程 ID,这当然是不可行的。

在谷歌上进行了一些搜索后,我发现了set_tid_address,它的名字看起来很有趣,但我不确定它是否可以实现我的目的,因为它的文档不清楚。有什么想法,如何实现这一目标?

最佳答案

PID 由内核管理,在我的内核上使用 pidmap_array 位图。或多或少,下一个 PID 将是最后一个加一(直到根据需要循环返回开始)。除了上面建议的私有(private)重新映射之外,您无能为力。

关于c - 设置线程ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298176/

相关文章:

c++ - 如何编辑和重新构建 GCC libstdc++ C++ 标准库源代码?

自定义工具链构建失败

c - 为什么下面的语句打印三次?

c - 如何初始化指向结构内部的 NULL 的指针数组,并且该结构位于其他结构的数组中

c++ - ofstream-保存一个函数返回一个txt

在 C 中使用 scanf 时,代码不会编译或抛出错误,永远陷入构建困境

c++ - 为什么不推荐使用 isascii()?

C - 函数中的 malloc 数组,然后从外部访问数组

linux - Apache Web 服务器在 Windows 和 Linux 上共享文档根目录

c++ - 棘手的 undefined reference 错误