【发布时间】:2012-02-17 08:24:30
【问题描述】:
我有多个线程正在运行(pthreads api),每个线程都有自己的计时器,在一定时间间隔后调用函数处理程序(int signum)。当这些线程调用处理程序和函数处理程序时,我怎么知道是哪个线程调用了它?是否需要特定于线程的数据?
【问题讨论】:
标签: c multithreading timer
我有多个线程正在运行(pthreads api),每个线程都有自己的计时器,在一定时间间隔后调用函数处理程序(int signum)。当这些线程调用处理程序和函数处理程序时,我怎么知道是哪个线程调用了它?是否需要特定于线程的数据?
【问题讨论】:
标签: c multithreading timer
您可以使用pthread_self() 函数获取当前线程的ID。
【讨论】:
如果您只想知道哪个线程正在执行,pthread_self() 获取您唯一的线程 ID 应该是您所需要的。
也就是说,不知道您的计时器实现,如果您需要的不仅仅是一个 ID,我只需让 pthread 从它自己的上下文中将一个对象作为参数传递给处理程序。这将允许您在不诉诸 pthread_setspecific()/pthread_getspecific()
的情况下传递任何数据【讨论】: