add function fc_queue_pop_to_queue_ex

iovec_array
YuQing 2021-06-01 17:08:24 +08:00
parent d5fd9a176d
commit 48f108b40d
4 changed files with 18 additions and 5 deletions

View File

@ -1,6 +1,7 @@
Version 1.52 2021-06-01
* process_stop more gracefully (kill -9 on timeout)
* add function fc_queue_pop_to_queue_ex
Version 1.51 2021-05-27
* fast_mblock.[hc]: support batch alloc and batch free

View File

@ -155,10 +155,16 @@ void fc_queue_push_queue_to_tail_ex(struct fc_queue *queue,
PTHREAD_MUTEX_UNLOCK(&queue->lc_pair.lock);
}
void fc_queue_pop_to_queue(struct fc_queue *queue,
struct fc_queue_info *qinfo)
void fc_queue_pop_to_queue_ex(struct fc_queue *queue,
struct fc_queue_info *qinfo, const bool blocked)
{
PTHREAD_MUTEX_LOCK(&queue->lc_pair.lock);
if (queue->head == NULL) {
if (blocked) {
pthread_cond_wait(&queue->lc_pair.cond, &queue->lc_pair.lock);
}
}
if (queue->head != NULL) {
qinfo->head = queue->head;
qinfo->tail = queue->tail;

View File

@ -129,8 +129,14 @@ void *fc_queue_pop_all_ex(struct fc_queue *queue, const bool blocked);
#define fc_queue_pop_all(queue) fc_queue_pop_all_ex(queue, true)
#define fc_queue_try_pop_all(queue) fc_queue_pop_all_ex(queue, false)
void fc_queue_pop_to_queue(struct fc_queue *queue,
struct fc_queue_info *qinfo);
void fc_queue_pop_to_queue_ex(struct fc_queue *queue,
struct fc_queue_info *qinfo, const bool blocked);
#define fc_queue_pop_to_queue(queue, qinfo) \
fc_queue_pop_to_queue_ex(queue, qinfo, true)
#define fc_queue_try_pop_to_queue(queue, qinfo) \
fc_queue_pop_to_queue_ex(queue, qinfo, false)
static inline bool fc_queue_empty(struct fc_queue *queue)
{

View File

@ -840,7 +840,7 @@ static void sched_deal_task_queue(ScheduleContext *pContext)
FastDelayTask *task;
struct fc_queue_info qinfo;
fc_queue_pop_to_queue(&pContext->delay_queue, &qinfo);
fc_queue_try_pop_to_queue(&pContext->delay_queue, &qinfo);
task = qinfo.head;
while (task != NULL)
{