This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libgomp: Purpose of gomp_thread_pool::last_team?


On Thu, Jul 02, 2015 at 09:57:20PM +0200, Sebastian Huber wrote:
> does anyone know what the purpose of gomp_thread_pool::last_team is? This field seems to be used to delay the team destruction in gomp_team_end() in case the team has more than one thread and the previous team state has no team associated (identifies this a master thread?):
> 
>   if (__builtin_expect (thr->ts.team != NULL, 0)
>       || __builtin_expect (team->nthreads == 1, 0))
>     free_team (team);
>   else
>     {
>       struct gomp_thread_pool *pool = thr->thread_pool;
>       if (pool->last_team)
> 	free_team (pool->last_team);
>       pool->last_team = team;
>     }
> 
> Why can you not immediately free the team?

That was added with
https://gcc.gnu.org/ml/gcc-patches/2008-05/msg01674.html
and the purpose is for non-nested teams make sure all the
threads in the team move on to the pool's barrier before
the team's barrier is destroyed.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]