这与How to assign unique ids to threads in a pthread wrapper?和The need for id_callback when in a multithread environment?相关。
当我们需要区分唯一线程时,我们不能使用像pthread_self
这样的函数,因为线程ID会被重用。在这些问题中,建议使用单调递增的计数器来提供唯一的ID,因为反潜的线程id重用。然后,计数器通过arg
中的pthread_create
传递给线程。
由于重用问题,我认为我们无法维护外部线程ID到唯一ID的映射。相同的线程ID可以具有多个唯一ID。
我们如何从 线程中检索传递给arg
的{{1}}?它甚至可以检索吗?
答案 0 :(得分:1)
我不认为我们可以将外部线程ID的映射保持为唯一 id因为重用问题。相同的线程ID可能有 多个独特的ID。
您可以,只要在此映射中,您只保留与当前正在运行的线程对应的外部线程ID。线程退出时,将其从地图中删除。
地图的用户显然只关心当前正在运行的线程,因为显然它必须识别它想要的线程的唯一方法是外部线程ID。