【发布时间】:2014-07-22 09:28:06
【问题描述】:
假设我正在编写一个 pthread 包装器。我尝试在线程创建阶段为线程分配唯一的 id,以便我可以确定执行。如何让每个线程知道他的唯一 ID?
【问题讨论】:
-
为什么不用pthread_self和pthread_getthreadid_np?
-
@Lazin - 它们不是唯一的;它们可以重复使用。请参阅
pthread_self(3)手册页。
假设我正在编写一个 pthread 包装器。我尝试在线程创建阶段为线程分配唯一的 id,以便我可以确定执行。如何让每个线程知道他的唯一 ID?
【问题讨论】:
pthread_self(3) 手册页。
您不能强制系统使用您选择的 id。
根据@Lazin 的评论:pthread_self() 会告诉 pthread 系统给它的 id。
如果您想分配自己的 id(例如一些小整数),那么显然您可以这样做并将它与使用 pthread_create() 的 void* arg 参数(最后一个参数)传递的任何其他参数一起传递到 pthread。
【讨论】:
pthread_self()返回给线程的thread-id是一样的,可以比较thread-ids是否相等(pthread_equal()),它们是唯一的...所以您可以像使用token_id 一样使用pthread_t 吗?