static void DaoCallServer_Delete( DaoCallServer *self ) { daoint i; for(i=0; i<self->threads->size; i++){ DaoCallThread_Delete( (DaoCallThread*)self->threads->items.pVoid[i] ); } for(i=0; i<self->caches->size; ++i){ DaoTaskEvent_Delete( (DaoTaskEvent*) self->caches->items.pVoid[i] ); } DList_Delete( self->threads ); DList_Delete( self->functions ); DList_Delete( self->parameters ); DList_Delete( self->owners ); DList_Delete( self->events ); DList_Delete( self->events2 ); DList_Delete( self->caches ); DMap_Delete( self->waitings ); DMap_Delete( self->pending ); DMap_Delete( self->active ); DMutex_Destroy( & self->mutex ); DCondVar_Destroy( & self->condv ); DCondVar_Destroy( & self->condv2 ); DThread_Destroy( & self->timer ); dao_free( self ); }
static void DaoThread_SysQuit() { DThread *self = & mainThread; DThread_Destroy( self ); pthread_key_delete( thdSpecKey ); }
static void DaoCallThread_Delete( DaoCallThread *self ) { // XXX self->thdData DThread_Destroy( & self->thread ); dao_free( self ); }
static void DaoTaskletThread_Delete( DaoTaskletThread *self ) { DThread_Destroy( & self->thread ); dao_free( self ); }
static void DaoThread_SysQuit() { DThread_Destroy( & mainThread ); TlsFree( thdSpecKey ); }