设置线程ID

时间:2011-11-28 15:32:20

标签: c linux gcc x86

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

在Google上进行一些搜索显示我 set_tid_address ,其名称看起来很有趣,但我不确定它是否能达到我的目的,因为它的文档不清楚。任何想法,如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

可能的解决方案:

  1. 将结构传递给您创建的每个线程(通常作为指针),然后让它们根据需要填写线程ID和其他属性 - 它也可以用于提供参数。
  2. 有一个映射,用于映射逻辑“线程号”和“线程ID”

答案 1 :(得分:0)

  

由于某种原因,我不能使用线程局部变量

弄清楚原因并消除它。

否则你正在练习“Programming by coincidence”。