有什么特定的方法可以从 pthread_create 中获取所有线程的列表吗?

Is there any specific way to get a list of all threads from pthread_create?

在linux系统上,使用pthread_create,我们可以创建一个线程。但是我们怎么知道创建的线程数呢? 有什么办法可以从 pthread_create 得到它吗?或任何其他方式可以为我们提供为进程创建的线程列表?我正在寻找 C 或 C++ 的代码示例。

On linux systems, using pthread_create, we can create a thread. But how do we know the count of threads created?

如果您需要该信息,请手动进行跟踪。

Is there any way to get that from pthread_create?

没有

or any other way which will give us a list of threads created for a process?

Pthreads 不提供 API 来提取属于当前进程的活动线程的线程 ID 列表。 pthreads 程序负责跟踪它自己的线程。

有多种方法可以获取有关进程线程的信息,例如 ps H 及其所依赖的系统调用,但那里没有太多可操作的信息。你可以得到一个计数,至少:

char command[50];
int thread_count;

sprintf(command, "ps H --no-headers %d | wc -l", (int) getpid());
FILE *thread_counter = popen(command, "r");

fscanf(thread_counter, "%d", &thread_count);
pclose(thread_counter);
printf("%d\n", thread_count);