【问题标题】:Get index of pthread without passing it as an argument to a function.获取 pthread 的索引,而不将其作为参数传递给函数。
【发布时间】:2017-04-02 23:19:52
【问题描述】:

有人告诉我,我可以获得一个 pthread 相对于其他 pthread(0、1、2 等)的索引。

但同时使用

pthread_t id = pthread_self();
uint64_t tid;

pthread_threadid_np(NULL, &tid);

给出以下内容。 (例如有 4 个 pthreads。)

2134955
2134954
2134956
2134957

232833024
232296448
233369600
233906176

在这种情况下,我希望获取 pthread (0,1,2,3) 的索引。如果不将其作为参数发送给 pthread 函数,这可能吗?感谢您的帮助。

【问题讨论】:

    标签: c unix parallel-processing pthreads


    【解决方案1】:

    没有这样的索引。

    您所拥有的只是pthread_self() 返回的pthread_t,它甚至不一定是整数类型,如果是,它当然不必按任何特定顺序分配。

    如果你想要一个从零开始的整数索引,你需要自己分配它。不过,它不一定是线程函数的参数 - 您可以拥有一个受互斥锁保护的全局计数器,每个线程都可以从该计数器为自己分配一个 ID 并递增它。

    【讨论】:

    • pthread_t 不必是算术类型;指针是常见的/合理的,实际上它甚至可以是一个聚合类型(struct)。
    • @R..:啊,我正在阅读旧版本的 POSIX,该更改是在第 6 期中进行的。
    猜你喜欢
    • 2013-12-10
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2013-07-11
    相关资源
    最近更新 更多