gpt4 book ai didi

process - 内核:如何从进程的task_struct中查找所有线程?

转载 作者:行者123 更新时间:2023-12-02 16:54:18 30 4
gpt4 key购买 nike

给定一个进程或线程的任务结构,迭代属于同一进程的所有其他线程的习惯用法是什么?

最佳答案

Linux 不区分进程(任务)和线程。库调用 fork() 和 pthread_create() 使用相同的系统调用 clone()。 fork() 和 pthread_create() 之间的区别在于传递给clone() 的位掩码。该位掩码描述了哪些资源(内存、文件、文件系统、信号处理程序......)。有关详细信息,请参阅 man clone(2)。

无论如何,有一个叫做线程组的东西,并且在clone()调用中有一个特殊的标志,它表明新进程属于同一个线程组。此机制通常用于将通过在位掩码中指定 CLONE_THREAD 的 clone() 创建的所有任务放在一起。对于此线程,linux/sched/signal.h 包含文件中存在宏 while_each_thread。它的使用方式如下:

struct task_struct *me = current;
struct task_struct *t = me;
do {
whatever(t);
} while_each_thread(me, t);

关于process - 内核:如何从进程的task_struct中查找所有线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457890/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com