Esempio n. 1
0
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);
}
Esempio n. 2
0
/* 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;
}
Esempio n. 3
0
/* 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;
}