Beispiel #1
0
/** 停用事件模块并进行清理 */
static void LCUI_ExitEvent(void)
{
	System.event.is_running = FALSE;
	LCUICond_Broadcast( &System.event.cond );
	LCUIThread_Join( System.event.tid, NULL );
	LCUICond_Destroy( &System.event.cond );
	LCUIEventBox_Destroy( System.event.box );
	System.event.box = NULL;
}
Beispiel #2
0
static void TestWorker_Destroy( TestWorker worker )
{
	LCUIMutex_Lock( &worker->mutex );
	worker->active = FALSE;
	LCUICond_Signal( &worker->cond );
	LCUIMutex_Unlock( &worker->mutex );
	LCUIThread_Join( worker->thread, NULL );
	LCUIMutex_Destroy( &worker->mutex );
	LCUICond_Destroy( &worker->cond );
}
Beispiel #3
0
void LCUIWorker_Destroy( LCUI_Worker worker )
{
	if( worker->thread != 0 ) {
		LOG( "[worker] worker %u is stopping...\n", worker->thread );
		LCUIMutex_Lock( &worker->mutex );
		worker->active = FALSE;
		LCUICond_Signal( &worker->cond );
		LCUIMutex_Unlock( &worker->mutex );
		LCUIThread_Join( worker->thread, NULL );
		LOG( "[worker] worker %u has stopped\n", worker->thread );
		worker->thread = 0;
	}
	LCUIMutex_Destroy( &worker->mutex );
	LCUICond_Destroy( &worker->cond );
	LinkedList_Clear( &worker->tasks, OnDeleteTask );
	free( worker );
}