【问题标题】:Indicating which thread when handler (timer) called?指示处理程序(计时器)调用时哪个线程?
【发布时间】:2012-02-17 08:24:30
【问题描述】:

我有多个线程正在运行(pthreads api),每个线程都有自己的计时器,在一定时间间隔后调用函数处理程序(int signum)。当这些线程调用处理程序和函数处理程序时,我怎么知道是哪个线程调用了它?是否需要特定于线程的数据?

【问题讨论】:

    标签: c multithreading timer


    【解决方案1】:

    您可以使用pthread_self() 函数获取当前线程的ID。

    【讨论】:

      【解决方案2】:

      如果您只想知道哪个线程正在执行,pthread_self() 获取您唯一的线程 ID 应该是您所需要的。

      也就是说,不知道您的计时器实现,如果您需要的不仅仅是一个 ID,我只需让 pthread 从它自己的上下文中将一个对象作为参数传递给处理程序。这将允许您在不诉诸 pthread_setspecific()/pthread_getspecific()

      的情况下传递任何数据

      【讨论】:

        猜你喜欢
        • 2012-03-09
        • 2012-11-06
        • 2017-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多