【问题标题】:Is it possible to determine if a pthread_t struct is unused?是否可以确定 pthread_t 结构是否未使用?
【发布时间】:2012-04-22 18:56:15
【问题描述】:

是否可以确定我声明的 pthread_t 结构是否未使用?我有一个 pthread_t 结构数组,在我的程序结束时,我在每个结构上调用 pthread_join(),但如果其中一些从未使用过,我不想在它们上调用 pthread_join()。判断 pthread_t 结构是否未使用的最佳方法是什么?

【问题讨论】:

    标签: c struct pthreads


    【解决方案1】:

    传递给pthread_join()pthread_t 对象必须引用一个可连接的线程。所以你需要自己跟踪 - 在 pthread_t 对象旁边保留一个标志以跟踪它是否被使用(也许将标志与 pthread_t 一起打包在一个结构中)。

    请记住,除了尚未使用 pthread_t 对象之外,如果您从线程分离或加入线程,您还需要清除标志(我不确定这是否是一个详尽的列表pthread_t 对象何时变为“不可加入”...)。

    【讨论】:

    • pthread_t 不一定是结构体!这是一个不透明的类型,你知道的可能是some_type *unsigned int。只有最近的 POSIX 更正 (2004) 删除了 pthread_t 是算术类型的要求,允许它是一个结构。
    猜你喜欢
    • 2012-04-11
    • 2017-04-15
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多