分析完成之后的事件存到队列中,入队列函数如下:
int queue_push_ex_block(w_queue_t * queue, void * data) {
int result;
w_mutex_lock(&queue->mutex);
while (result = queue_full(queue), result) {
w_cond_wait(&queue->available_not_empty, &queue->mutex);
}
result = queue_push(queue,data);
w_cond_signal(&queue->available_not_empty);
w_cond_signal(&queue->available);
w_mutex_unlock(&queue->mutex);
return result;
}
已分析完成的事件队列中,获取事件函数:
void * queue_pop_ex(w_queue_t * queue) {
void * data;
w_mutex_lock(&queue->mutex);
while (data = queue_pop(queue), !data) {
w_cond_wait(&queue->available, &queue->mu