legacy_sources/v1/libparallel.c
/*----------------------------------------------------------*/
/* Stop all threads and free memories						*/
/*----------------------------------------------------------*/
Stop all threads and free memories
Stop all threads and free memories
void StopParallel(void)
{
	int i, sta;
	pthread_mutex_lock(par->mtx);
	for(i=0;i<par->NmbCpu;i++)
		par->PthTab[i].sta = ParEnd;
	pthread_mutex_unlock(par->mtx);
	for(i=0;i<par->NmbCpu;i++)
		pthread_join(par->PthTab[i].pth, (void **)&sta);
	for(i=0;i<MaxTyp;i++)
	{
		if(par->TypTab[i].WrkTab)
			free(par->TypTab[i].WrkTab);
		if(par->TypTab[i].DepTab)
			free(par->TypTab[i].DepTab);
	}
	free(par);
	pthread_attr_destroy(&PthAtr);
}
void StopParallel ( void ) { int i , sta ; pthread_mutex_lock ( par -> mtx ) ; for ( i = 0 ; i < par -> NmbCpu ; i ++ ) par -> PthTab [ i ] . sta = ParEnd ; pthread_mutex_unlock ( par -> mtx ) ; for ( i = 0 ; i < par -> NmbCpu ; i ++ ) pthread_join ( par -> PthTab [ i ] . pth , ( void * * ) & sta ) ; for ( i = 0 ; i < MaxTyp ; i ++ ) { if ( par -> TypTab [ i ] . WrkTab ) free ( par -> TypTab [ i ] . WrkTab ) ; if ( par -> TypTab [ i ] . DepTab ) free ( par -> TypTab [ i ] . DepTab ) ; } free ( par ) ; pthread_attr_destroy ( & PthAtr ) ; }
Stop all threads and free memories
Stop all threads and free memories
/* Stop threads */ /* Free memories */