void mqueue_recv(MQBuf b) { MQueue q = mqueue_self(); pthread_mutex_lock(&q->mutex); if(q->headptr != NULL) { mqueue_pop(q, b); pthread_mutex_unlock(&q->mutex); return; } pthread_cond_wait(&q->cond, &q->mutex); mqueue_pop(q, b); pthread_mutex_unlock(&q->mutex); }
/* get first taskid */ int wtable_pop_task(WTABLE *w, int wid) { int ret = -1; if(w && wid > 0 && wid < W_WORKER_MAX) { mqueue_pop(w->queue, w->workers[wid].task_qid, &ret); } return ret; }
/* over msg */ int wtable_over_msg(WTABLE *w, int wid, int conn_id) { int ret = -1; if(w && wid > 0 && conn_id > 0 && conn_id < W_CONN_MAX) { mqueue_pop(w->workers[wid].queue, w->workers[wid].q[conn_id], NULL); ret = mqueue_total(w->workers[wid].queue, w->workers[wid].q[conn_id]); } return ret; }