Пример #1
0
static void async_dispatch(LwqqClient* lc,DISPATCH_FUNC func,void* param)
{
    async_dispatch_data* data = malloc(sizeof(async_dispatch_data));
    data->func = func;
    data->client = lc;
    data->data = param;
    lwqq_async_timer_watch(&data->handle, 50, timeout_come, data);
}
Пример #2
0
void lwqq_async_dispatch(DISPATCH_FUNC dsph,CALLBACK_FUNC func , ...)
{
    async_dispatch_data* data = s_malloc0(sizeof(*data));
    data->dsph = dsph;
    data->func = func;
    va_list args;
    va_start(args,func);
    dsph(NULL,&data->data,&args);
    va_end(args);
    lwqq_async_timer_watch(&data->timer, 10, timeout_come, data);
}
Пример #3
0
void lwqq_async_dispatch_delay(LwqqCommand cmd,unsigned long timeout)
{
#ifndef WITHOUT_ASYNC
	if(timeout==0) timeout=10;
	async_dispatch_data* data = s_malloc0(sizeof(*data));
	data->cmd = cmd;
	data->timer = lwqq_async_timer_new();
	lwqq_async_timer_watch(data->timer, timeout, dispatch_wrap, data);
#else
	vp_do(cmd,NULL);
#endif
}
Пример #4
0
void lwqq_async_global_quit()
{
    //no need to destroy thread
    if(ev_thread_status == THREAD_NOT_CREATED) return ;
    global_quit_lock = 1;

    if(ev_thread_status == THREAD_NOW_WAITING){
        pthread_cond_signal(&ev_thread_cond);
    }else if(ev_thread_status == THREAD_NOW_RUNNING){
        bomb = lwqq_async_timer_new();
        lwqq_async_timer_watch(bomb, 50, ev_bomb, NULL);
    }
    ev_thread_status = THREAD_NOT_CREATED;
    pthread_join(pid,NULL);
    LWQQ__ASYNC_IMPL(loop_free)();
    global_quit_lock = 0;
}