当前位置: 首页>>代码示例>>C++>>正文


C++ queue_length函数代码示例

本文整理汇总了C++中queue_length函数的典型用法代码示例。如果您正苦于以下问题:C++ queue_length函数的具体用法?C++ queue_length怎么用?C++ queue_length使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了queue_length函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: playlist_delete_range

enum playlist_result
playlist_delete_range(struct playlist *playlist, unsigned start, unsigned end)
{
	const struct song *queued;

	if (start >= queue_length(&playlist->queue))
		return PLAYLIST_RESULT_BAD_RANGE;

	if (end > queue_length(&playlist->queue))
		end = queue_length(&playlist->queue);

	if (start >= end)
		return PLAYLIST_RESULT_SUCCESS;

	queued = playlist_get_queued_song(playlist);

	do {
		playlist_delete_internal(playlist, --end, &queued);
	} while (end != start);

	playlist_increment_version(playlist);
	playlist_update_queued_song(playlist, queued);

	return PLAYLIST_RESULT_SUCCESS;
}
开发者ID:OpenInkpot-archive,项目名称:iplinux-mpd,代码行数:25,代码来源:playlist_edit.c

示例2: queue_do_pop

static VALUE
queue_do_pop(VALUE self, int should_block)
{
    struct waiting_delete args;
    args.waiting = GET_QUEUE_WAITERS(self);
    args.th	 = rb_thread_current();

    while (queue_length(self) == 0) {
	if (!should_block) {
	    rb_raise(rb_eThreadError, "queue empty");
	}
	else if (queue_closed_p(self)) {
	    return queue_closed_result(self);
	}
	else {
	    assert(queue_length(self) == 0);
	    assert(queue_closed_p(self) == 0);

	    rb_ary_push(args.waiting, args.th);
	    rb_ensure(queue_sleep, (VALUE)0, queue_delete_from_waiting, (VALUE)&args);
	}
    }

    return rb_ary_shift(GET_QUEUE_QUE(self));
}
开发者ID:hayaken8112,项目名称:.emacs.d,代码行数:25,代码来源:thread_sync.c

示例3: playlist_move_range

enum playlist_result
playlist_move_range(struct playlist *playlist,
		    unsigned start, unsigned end, int to)
{
	const struct song *queued;
	int currentSong;

	if (!queue_valid_position(&playlist->queue, start) ||
		!queue_valid_position(&playlist->queue, end - 1))
		return PLAYLIST_RESULT_BAD_RANGE;

	if ((to >= 0 && to + end - start - 1 >= queue_length(&playlist->queue)) ||
	    (to < 0 && abs(to) > (int)queue_length(&playlist->queue)))
		return PLAYLIST_RESULT_BAD_RANGE;

	if ((int)start == to)
		/* nothing happens */
		return PLAYLIST_RESULT_SUCCESS;

	queued = playlist_get_queued_song(playlist);

	/*
	 * (to < 0) => move to offset from current song
	 * (-playlist.length == to) => move to position BEFORE current song
	 */
	currentSong = playlist->current >= 0
		? (int)queue_order_to_position(&playlist->queue,
					      playlist->current)
		: -1;
	if (to < 0 && playlist->current >= 0) {
		if (start <= (unsigned)currentSong && (unsigned)currentSong <= end)
			/* no-op, can't be moved to offset of itself */
			return PLAYLIST_RESULT_SUCCESS;
		to = (currentSong + abs(to)) % queue_length(&playlist->queue);
		if (start < (unsigned)to)
			to--;
	}

	queue_move_range(&playlist->queue, start, end, to);

	if (!playlist->queue.random) {
		/* update current/queued */
		if ((int)start <= playlist->current &&
		    (unsigned)playlist->current < end)
			playlist->current += to - start;
		else if (playlist->current >= (int)end &&
			 playlist->current <= to) {
			playlist->current -= end - start;
		} else if (playlist->current >= to &&
			   playlist->current < (int)start) {
			playlist->current += end - start;
		}
	}

	playlist_increment_version(playlist);

	playlist_update_queued_song(playlist, queued);

	return PLAYLIST_RESULT_SUCCESS;
}
开发者ID:OpenInkpot-archive,项目名称:iplinux-mpd,代码行数:60,代码来源:playlist_edit.c

示例4: dump_order

G_GNUC_UNUSED
static void
dump_order(const struct queue *queue)
{
	g_printerr("queue length=%u, order:\n", queue_length(queue));
	for (unsigned i = 0; i < queue_length(queue); ++i)
		g_printerr("  [%u] -> %u (prio=%u)\n", i, queue->order[i],
			   queue->items[queue->order[i]].priority);
}
开发者ID:Acidburn0zzz,项目名称:mpd,代码行数:9,代码来源:test_queue_priority.c

示例5: helper_thread

void* helper_thread(void* args)
{
    //Unpack args
    ARG_HOLDER* argholder = (ARG_HOLDER*)(args);
    rule_node_t* queue = argholder->rule_queue;
    int queue_size = argholder->max_queue_length;
    argholder->threads_not_done++;
    int threadno = argholder->threads_not_done;
	int ql = queue_length(queue) - 1;
    while (!argholder->finished_adding || ql > 0)
    {
        //Check queue and "execute" targets on it
	    int full_queue = 0;
	    while (!argholder->done && ql == 0)
	    {
	        //Wait for the queue length to go up
	        cond_wait(&queue_empty, &mutex);
	        ql = queue_length(queue) - 1;
	    }
	    if (ql == queue_size)
	    {
	        full_queue = 1;
	    }
	    if (ql > 0 && !argholder->done)
        {
            //Remove the first target from the queue and "execute" it
            sem_wait(&sem_lock);
            rule_node_t* first_node = queue->next;
            rule_node_t* qnode = first_node->next;
            rule_t* cur_rule = first_node->rule;
            queue->next = qnode;
            free(first_node);
            sem_post(&sem_lock);
            //If the queue was full, signal the main thread that it is not
            if (full_queue)
            {
                pthread_cond_broadcast(&queue_full);
            }
            
            fake_exec(cur_rule);
            
            //Put rule on output queue
            rule_node_t* out_first = argholder->output_queue;
            rule_node_t* output = (rule_node_t*)malloc(sizeof(rule_node_t));
            output->rule = cur_rule;
            output->next = out_first;
            argholder->output_queue = output;
        }
        ql = queue_length(queue) - 1;
    }
    argholder->done = 1;
    argholder->threads_not_done--;
    pthread_cond_broadcast(&queue_empty);
    pthread_cond_signal(&finished_execution);
    //printf("Thread %d exiting.\n", threadno);
    return NULL;
}
开发者ID:jwellington,项目名称:hw4,代码行数:57,代码来源:dime.c

示例6: decide_frame_length

static int decide_frame_length(PullupContext *s)
{
    PullupField *f0 = s->first;
    PullupField *f1 = f0->next;
    PullupField *f2 = f1->next;
    PullupField *f;
    int i, l, n;

    if (queue_length(s->first, s->last) < 4)
        return 0;

    f = s->first;
    n = queue_length(f, s->last);
    for (i = 0; i < n - 1; i++) {
        if (i < n - 3)
            compute_breaks(s, f);

        compute_affinity(s, f);

        f = f->next;
    }

    if (f0->affinity == -1)
        return 1;

    l = find_first_break(f0, 3);

    if (l == 1 && s->strict_breaks < 0)
        l = 0;

    switch (l) {
    case 1:
        return 1 + (s->strict_breaks < 1 && f0->affinity == 1 && f1->affinity == -1);
    case 2:
        /* FIXME: strictly speaking, f0->prev is no longer valid... :) */
        if (s->strict_pairs
            && (f0->prev->breaks & BREAK_RIGHT) && (f2->breaks & BREAK_LEFT)
            && (f0->affinity != 1 || f1->affinity != -1) )
            return 1;
        return 1 + (f1->affinity != 1);
    case 3:
        return 2 + (f2->affinity != 1);
    default:
        /* 9 possibilities covered before switch */
        if (f1->affinity == 1)
            return 1; /* covers 6 */
        else if (f1->affinity == -1)
            return 2; /* covers 6 */
        else if (f2->affinity == -1) { /* covers 2 */
            return (f0->affinity == 1) ? 3 : 1;
        } else {
            return 2; /* the remaining 6 */
        }
    }
}
开发者ID:Bjelijah,项目名称:EcamTurnH265,代码行数:55,代码来源:vf_pullup.c

示例7: check_descending_priority

static void
check_descending_priority(G_GNUC_UNUSED const struct queue *queue,
			 unsigned start_order)
{
	assert(start_order < queue_length(queue));

	uint8_t last_priority = 0xff;
	for (unsigned order = start_order; order < queue_length(queue); ++order) {
		unsigned position = queue_order_to_position(queue, order);
		uint8_t priority = queue->items[position].priority;
		assert(priority <= last_priority);
		(void)last_priority;
		last_priority = priority;
	}
}
开发者ID:Acidburn0zzz,项目名称:mpd,代码行数:15,代码来源:test_queue_priority.c

示例8: main

int main(int argc, char const *argv[])
{
	void * queue;
	queue = queue_create();
	
	teacher_t t[50];

	for (int i = 0 ; i < 50; i++)
	{
		t[i].age = i;
		queue_insert(queue, &t[i]);
	}
	
	teacher_t * p;
	int k = queue_length(queue);
	for (int i = 0; i < k-1; i++)
	{
		p = (teacher_t *)queue_delete(queue);
		fprintf(stdout, "%d ", p->age);
	} 

	fprintf(stdout, "\n");

	p = (teacher_t *)queue_head(queue);
	fprintf(stdout, "%d ", p->age);
	fprintf(stdout, "\n");
	queue_delete(queue);

	for (int i = 0 ; i < 50; i++)
	{
		t[i].age = i + 100;
		queue_insert(queue, &t[i]);
	}
	if (!queue_empty(queue))
		fprintf(stdout, "queue is not empty\n");
	k = queue_length(queue);
	for (int i = 0; i < k; i++)
	{
		p = (teacher_t *)queue_delete(queue);
		fprintf(stdout, "%d ", p->age);
	} 
	fprintf(stdout, "\n");
	if (queue_empty(queue))
		fprintf(stdout, "queue not empty\n");

	queue_destroy(queue);
	return 0;
}
开发者ID:fonglee,项目名称:just_for_fun,代码行数:48,代码来源:test.c

示例9: threadpool_add_task

int threadpool_add_task(threadpool *tp, task_function task_fn, void *arg) {
	int ret, retval;
	task *next_task;

	if (!tp || !task_fn) {
		tp_error("got a NULL argument: tp=%p, task_fn=%p\n", tp, task_fn);
		return -1;
	}

	kp_kpalloc((void **)(&next_task), sizeof(task), tp->use_nvm);
	if (!next_task) {
		tp_error("malloc(next_task) failed\n");
		return -1;
	}
	next_task->task_fn = task_fn;
	next_task->arg = arg;
	next_task->use_nvm = tp->use_nvm;

	retval = 0;
	kp_mutex_lock("add task", tp->lock);

	ret = queue_enqueue(tp->task_queue, (void *)next_task, task_free_fn);
	if (ret != 0) {
		tp_error("queue_enqueue returned error=%d\n", ret);
		retval = -1;
	} else {
		ret = pthread_cond_signal(tp->task_available);
		if (ret != 0) {
			tp_error("pthread_cond_signal(task_available) returned error=%d\n",
					ret);
			retval = -1;
		} else {
			tp_debug("successfully added a task and signaled task_available "
					"condition\n");
		}
	}
	tp->tasks_pending++;
#ifdef TP_ASSERT
	if (tp->tasks_pending != queue_length(tp->task_queue)) {
		tp_die("mismatch: tasks_pending=%u, but task_queue length=%u\n",
				tp->tasks_pending, queue_length(tp->task_queue));
	}
#endif

	kp_mutex_unlock("add task", tp->lock);

	return retval;
}
开发者ID:snalli,项目名称:echo-keyvalue,代码行数:48,代码来源:threadpool.c

示例10: main

int main()
{
    Queue* q = queue_new("example", "localhost", 6379, 0, NULL);
    queue_connect(q);
    printf("Current Queue Length: %lld\n", queue_length(q));

    /*
    char *data = calloc(20, sizeof(char));
    strncpy(data, "\"ac\"", 7);
    Task *t = task_new(data, "0");

    Job *j = queue_enqueue(q, t);

    printf("Got job: %s\n", j->urn);

    task_destroy(t);
    job_destroy(j);
    */

    Task* t = queue_wait(q, 0);


    printf("Received: %s URN: %s \n", t->data, t->urn);


    task_destroy(t);    
    queue_destroy(q);
    return 0;
}
开发者ID:kushaldas,项目名称:libretask,代码行数:29,代码来源:dequeue_example2.c

示例11: service_mqlen

int service_mqlen(uint32_t handle) {
	struct service *s = service_grab(handle);
	if (!s) return 0;
	int mqlen = queue_length(s->queue);
	service_release(handle);
	return mqlen;
}
开发者ID:zhoukk,项目名称:service,代码行数:7,代码来源:service.c

示例12: threadpool_get_task_count_active

unsigned int threadpool_get_task_count_active(threadpool *tp) {
	if (!tp) {
		tp_error("got a NULL argument: tp=%p\n", tp);
		return UINT32_MAX;
	}
	return queue_length(tp->task_queue);
}
开发者ID:snalli,项目名称:echo-keyvalue,代码行数:7,代码来源:threadpool.c

示例13: get_ports

static int
get_ports(ClientData clientData,
              Tcl_Interp *interp,
              int argc,
              char *argv[])
{
    char msg[255];
    channel_t *chan;
    int i, n;

    memset(msg, 0, 255);
    n = queue_length(priv_c);
    Tcl_SetResult(interp,NULL,TCL_STATIC);
    for(i = 0; i < n; i++) {
        chan = (channel_t*)queue_get(priv_c, i, Q_KEEP);
        sprintf(msg, "%d", chan->port);
        Tcl_AppendElement(interp,msg);
    }

    UNUSED(clientData);
    UNUSED(argc);
    UNUSED(argv);

    return TCL_OK;
}
开发者ID:uclmediatools,项目名称:reflector,代码行数:25,代码来源:ui-controller.c

示例14: queue_dequeue

void*
queue_dequeue(
    queue_holder_t      *queue,
    size_t              offset)
{
    queue_node_t    *return_node; 
    
    if (queue == NULL) {
        return NULL;
    } 
    
    if (queue_length(queue) == 0) {
        return NULL;
    }
    
    return_node = queue->first;
    queue->first = queue->first->next;
    return_node->next = NULL;
    queue->size--;
    
    if (queue->size == 0) {
        queue->last = NULL;
    }
#if QUEUE_DEBUG() > 0
    printf("return_node: %p, offset: %lu, return_node-offset: %p\n",
            return_node, offset, (void*)return_node - offset);
#endif /* QUEUE_DEBUG() > 0 */

    /* need to cast to void prior to returning since
     * the ptr_math should not be done on the
     * queue_node_t
     */
    return (void *)return_node - offset; 
}
开发者ID:teirm,项目名称:C_data_structures,代码行数:34,代码来源:queue.c

示例15: spl_save_queue

enum playlist_result
spl_save_queue(const char *name_utf8, const struct queue *queue)
{
	char *path_fs;
	FILE *file;

	if (map_spl_path() == NULL)
		return PLAYLIST_RESULT_DISABLED;

	if (!spl_valid_name(name_utf8))
		return PLAYLIST_RESULT_BAD_NAME;

	path_fs = map_spl_utf8_to_fs(name_utf8);
	if (path_fs == NULL)
		return PLAYLIST_RESULT_BAD_NAME;

	if (g_file_test(path_fs, G_FILE_TEST_EXISTS)) {
		g_free(path_fs);
		return PLAYLIST_RESULT_LIST_EXISTS;
	}

	file = fopen(path_fs, "w");
	g_free(path_fs);

	if (file == NULL)
		return PLAYLIST_RESULT_ERRNO;

	for (unsigned i = 0; i < queue_length(queue); i++)
		playlist_print_song(file, queue_get(queue, i));

	fclose(file);

	idle_add(IDLE_STORED_PLAYLIST);
	return PLAYLIST_RESULT_SUCCESS;
}
开发者ID:OpenInkpot-archive,项目名称:iplinux-mpd,代码行数:35,代码来源:playlist_save.c


注:本文中的queue_length函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。