我尝试在Linux或FreeBSD下调试启用Pthread的程序。因此,我需要程序中运行的所有线程的id(就pthread_t
线程标识符而言)。例如,作为pthread_t
的数组。但我无法修改线程的功能,因为一方面我无法访问某些库的源代码,另一方面并行代码的部分是使用OpenMP实现的,没有线程函数,我可以修改。
是否有可移植的方式来获取程序当前存在的pthread的数量及其pthread_t
标识符?我必须意识到的最后一件事看起来像
int n = get_number_of_threads();
pthread_t *threads = get_thread_list();
for ( i = 0; i < n; i++) {
pthread_kill(threads[i], SIGUSR1);
}