Linux не различает процесс (задачу) и поток.Вызовы библиотек fork () и pthread_create () используют один и тот же системный вызов clone ().Разница между fork () и pthread_create () заключается в том, что битовая маска передается clone ().Эта битовая маска описывает, какие ресурсы (память, файлы, файловые системы, обработчик сигналов, ...).Смотрите man clone (2) для подробностей.
В любом случае в вызове clone () есть нечто, называемое группой потоков, и специальный флаг, который указывает, что новый процесс принадлежит той же группе потоков.Этот механизм обычно используется для объединения всех задач, которые создаются с помощью clone (), указывающей CLONE_THREAD в битовой маске.Для этих потоков существует макрос * while_each_thread * во включаемом файле sched.h.Используется так:
struct task_struct *me = current();
struct task_stuct *t = me;
do {
whatever(t);
}while_each_thread(me, t);