当处理程序(计时器)调用时指示哪个线程?

时间:2012-02-17 08:24:31

标签: c multithreading timer

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果您只想知道哪个线程正在执行,那么pthread_self()就可以获得您唯一的线程ID。

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

即可传入任何数据