threadgroup_lock — lock threadgroup
void threadgroup_lock ( | struct task_struct * tsk); | 
   Lock the threadgroup tsk belongs to.  No new task is allowed to enter
   and member tasks aren't allowed to exit (as indicated by PF_EXITING) or
   change ->group_leader/pid.  This is useful for cases where the threadgroup
   needs to stay stable across blockable operations.
   
fork and exit paths explicitly call threadgroup_change_{begin|end}() for synchronization. While held, no new task will be added to threadgroup and no existing live task will have its PF_EXITING set.
   de_thread does threadgroup_change_{begin|end}() when a non-leader
   sub-thread becomes a new leader.