gpt4 book ai didi

c - 如何确保不应再次获取返回到线程池的线程 ID

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:11 25 4
gpt4 key购买 nike

我正在 Linux 上用 C 编写代码。

在代码中,首先它生成 50 个线程,然后每个线程生成 1、2 或 3 个线程。

我的问题是(我猜)当其中一个线程完成其工作时(在这种情况下,其他一些线程可能尚未启动),它会将其 ID 返回到线程池。

因此,当剩余线程启动时,它们可能具有与早先返回到线程池的线程 ID 相同的线程 ID。

我不想要这个。我需要唯一的线程 ID(通过确保返回的 ID 不会被剩余线程再次获取)

最佳答案

我不认为你可以同时拥有唯一的线程 ID 和线程池——线程池的全部意义在于线程将在以后被重新用于更多任务,而线程不能(AFAIK)在创建后更改它们的线程 ID。

因此,您的选择是:

(a) 停止使用线程池,每次需要时都生成一个新线程(并在任务完成后让线程退出)。这通常会为您提供新的线程 ID,但请注意,操作系统最终也会开始重新使用线程 ID,这仅仅是因为可用的线程 ID 数量有限。

(b) 修改您的程序,使其不希望线程 ID 永远不会被重复使用。如果可能,请修改您的程序,使其根本不查看线程 ID。例如,如果您将线程 ID 用作程序需要完成的任务的 ID,请将其替换为您通过递增原子(或互斥保护)计数器生成的任务 ID。

关于c - 如何确保不应再次获取返回到线程池的线程 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727083/

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