首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保证返回到线程池的线程ID不会被再次获取

如何保证返回到线程池的线程ID不会被再次获取
EN

Stack Overflow用户
提问于 2013-03-31 14:43:58
回答 1查看 122关注 0票数 1

我正在Linux上用C语言写一段代码。

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

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2013-03-31 15:13:14

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

因此,您的选择是:

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15727083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档