这篇教程C++ APR_RING_REMOVE函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中APR_RING_REMOVE函数的典型用法代码示例。如果您正苦于以下问题:C++ APR_RING_REMOVE函数的具体用法?C++ APR_RING_REMOVE怎么用?C++ APR_RING_REMOVE使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了APR_RING_REMOVE函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: APR_DECLAREAPR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, const apr_pollfd_t *descriptor){ apr_os_sock_t fd; pfd_elem_t *ep; apr_status_t rv = APR_SUCCESS; int res; pollset_lock_rings(); if (descriptor->desc_type == APR_POLL_SOCKET) { fd = descriptor->desc.s->socketdes; } else { fd = descriptor->desc.f->filedes; } res = port_dissociate(pollset->port_fd, PORT_SOURCE_FD, fd); if (res < 0) { rv = APR_NOTFOUND; } if (!APR_RING_EMPTY(&(pollset->query_ring), pfd_elem_t, link)) { for (ep = APR_RING_FIRST(&(pollset->query_ring)); ep != APR_RING_SENTINEL(&(pollset->query_ring), pfd_elem_t, link); ep = APR_RING_NEXT(ep, link)) { if (descriptor->desc.s == ep->pfd.desc.s) { APR_RING_REMOVE(ep, link); APR_RING_INSERT_TAIL(&(pollset->dead_ring), ep, pfd_elem_t, link); break; } } } if (!APR_RING_EMPTY(&(pollset->add_ring), pfd_elem_t, link)) { for (ep = APR_RING_FIRST(&(pollset->add_ring)); ep != APR_RING_SENTINEL(&(pollset->add_ring), pfd_elem_t, link); ep = APR_RING_NEXT(ep, link)) { if (descriptor->desc.s == ep->pfd.desc.s) { APR_RING_REMOVE(ep, link); APR_RING_INSERT_TAIL(&(pollset->dead_ring), ep, pfd_elem_t, link); break; } } } pollset_unlock_rings(); return rv;}
开发者ID:TaoheGit,项目名称:hmi_sdl_android,代码行数:57,
示例2: apr_pcalloc/* * NOTE: This function is not thread safe by itself. Caller should hold the lock */static apr_thread_pool_task_t *task_new(apr_thread_pool_t * me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner, apr_time_t time){ apr_thread_pool_task_t *t; if (APR_RING_EMPTY(me->recycled_tasks, apr_thread_pool_task, link)) { t = apr_pcalloc(me->pool, sizeof(*t)); if (NULL == t) { return NULL; } } else { t = APR_RING_FIRST(me->recycled_tasks); APR_RING_REMOVE(t, link); } APR_RING_ELEM_INIT(t, link); t->func = func; t->param = param; t->owner = owner; if (time > 0) { t->dispatch.time = apr_time_now() + time; } else { t->dispatch.priority = priority; } return t;}
开发者ID:accre,项目名称:lstore-apr-util-accre,代码行数:33,
示例3: mmap_cleanupstatic apr_status_t mmap_cleanup(void *themmap){ apr_mmap_t *mm = themmap; apr_mmap_t *next = APR_RING_NEXT(mm,link); int rv = 0; /* we no longer refer to the mmaped region */ APR_RING_REMOVE(mm,link); APR_RING_NEXT(mm,link) = NULL; APR_RING_PREV(mm,link) = NULL; if (next != mm) { /* more references exist, so we're done */ return APR_SUCCESS; }#ifdef BEOS rv = delete_area(mm->area);#else rv = munmap(mm->mm, mm->size);#endif mm->mm = (void *)-1; if (rv == 0) { return APR_SUCCESS; } return errno;}
开发者ID:ohmann,项目名称:checkapi,代码行数:28,
示例4: remove_tasksstatic apr_status_t remove_tasks(apr_thread_pool_t *me, void *owner){ apr_thread_pool_task_t *t_loc; apr_thread_pool_task_t *next; int seg; t_loc = APR_RING_FIRST(me->tasks); while (t_loc != APR_RING_SENTINEL(me->tasks, apr_thread_pool_task, link)) { next = APR_RING_NEXT(t_loc, link); if (t_loc->owner == owner) { --me->task_cnt; seg = TASK_PRIORITY_SEG(t_loc); if (t_loc == me->task_idx[seg]) { me->task_idx[seg] = APR_RING_NEXT(t_loc, link); if (me->task_idx[seg] == APR_RING_SENTINEL(me->tasks, apr_thread_pool_task, link) || TASK_PRIORITY_SEG(me->task_idx[seg]) != seg) { me->task_idx[seg] = NULL; } } APR_RING_REMOVE(t_loc, link); } t_loc = next; } return APR_SUCCESS;}
开发者ID:accre,项目名称:lstore-apr-util-accre,代码行数:27,
示例5: rtsp_server_connection_close/** Close connection */static apt_bool_t rtsp_server_connection_close(rtsp_server_t *server, rtsp_server_connection_t *rtsp_connection){ apr_size_t remaining_sessions = 0; if(!rtsp_connection || !rtsp_connection->sock) { return FALSE; } apt_log(RTSP_LOG_MARK,APT_PRIO_INFO,"Close RTSP Connection %s",rtsp_connection->id); apt_poller_task_descriptor_remove(server->task,&rtsp_connection->sock_pfd); apr_socket_close(rtsp_connection->sock); rtsp_connection->sock = NULL; APR_RING_REMOVE(rtsp_connection,link); remaining_sessions = apr_hash_count(rtsp_connection->session_table); if(remaining_sessions) { rtsp_server_session_t *session; void *val; apr_hash_index_t *it; apt_log(RTSP_LOG_MARK,APT_PRIO_NOTICE,"Terminate Remaining RTSP Sessions [%"APR_SIZE_T_FMT"]", remaining_sessions); it = apr_hash_first(rtsp_connection->pool,rtsp_connection->session_table); for(; it; it = apr_hash_next(it)) { apr_hash_this(it,NULL,NULL,&val); session = val; if(session && session->terminating == FALSE) { rtsp_server_session_terminate_request(server,session); } } } else { rtsp_server_connection_destroy(rtsp_connection); } return TRUE;}
开发者ID:unispeech,项目名称:unimrcp,代码行数:35,
示例6: APR_RING_FIRST/** * Grab a resource from the front of the resource list. * Assumes: that the reslist is locked. */static apr_res_t *pop_resource(apr_reslist_t *reslist){ apr_res_t *res; res = APR_RING_FIRST(&reslist->avail_list); APR_RING_REMOVE(res, link); reslist->nidle--; return res;}
开发者ID:AAthresh,项目名称:quantlib,代码行数:12,
示例7: end_genstatic void end_gen(mpm_gen_info_t *gi){ ap_log_error(APLOG_MARK, APLOG_TRACE4, 0, ap_server_conf, "end of generation %d", gi->gen); ap_run_end_generation(ap_server_conf, gi->gen); APR_RING_REMOVE(gi, link); APR_RING_INSERT_HEAD(unused_geninfo, gi, mpm_gen_info_t, link);}
开发者ID:pexip,项目名称:os-apache2,代码行数:8,
示例8: do_waitstatic apr_status_t do_wait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, apr_interval_time_t timeout){ struct waiter_t *wait; thread_id cth = find_thread(NULL); apr_status_t rv; int flags = B_RELATIVE_TIMEOUT; /* We must be the owner of the mutex or we can't do this... */ if (mutex->owner != cth) { /* What should we return??? */ return APR_EINVAL; } acquire_sem(cond->lock); wait = APR_RING_FIRST(&cond->flist); if (wait) APR_RING_REMOVE(wait, link); else wait = make_waiter(cond->pool); APR_RING_INSERT_TAIL(&cond->alist, wait, waiter_t, link); cond->condlock = mutex; release_sem(cond->lock); apr_thread_mutex_unlock(cond->condlock); if (timeout == 0) flags = 0; rv = acquire_sem_etc(wait->sem, 1, flags, timeout); apr_thread_mutex_lock(cond->condlock); if (rv != B_OK) { if (rv == B_TIMED_OUT) return APR_TIMEUP; return rv; } acquire_sem(cond->lock); APR_RING_REMOVE(wait, link); APR_RING_INSERT_TAIL(&cond->flist, wait, waiter_t, link); release_sem(cond->lock); return APR_SUCCESS;}
开发者ID:cmjonze,项目名称:apr,代码行数:46,
示例9: APT_DECLAREAPT_DECLARE(apt_list_elem_t*) apt_list_elem_remove(apt_obj_list_t *list, apt_list_elem_t *elem){ apt_list_elem_t *next_elem = APR_RING_NEXT(elem,link); APR_RING_REMOVE(elem,link); if(next_elem == APR_RING_SENTINEL(&list->head,apt_list_elem_t,link)) { next_elem = NULL; } return next_elem;}
开发者ID:Deepwalker,项目名称:FreeSWITCH,代码行数:9,
示例10: mpf_buffer_chunk_readstatic APR_INLINE mpf_chunk_t* mpf_buffer_chunk_read(mpf_buffer_t *buffer){ mpf_chunk_t *chunk = NULL; if(!APR_RING_EMPTY(&buffer->head,mpf_chunk_t,link)) { chunk = APR_RING_FIRST(&buffer->head); APR_RING_REMOVE(chunk,link); } return chunk;}
开发者ID:Jared-Prime,项目名称:UniMRCP,代码行数:9,
示例11: MPF_DECLAREMPF_DECLARE(void) mpf_context_factory_destroy(mpf_context_factory_t *factory){ mpf_context_t *context; while(!APR_RING_EMPTY(&factory->head, mpf_context_t, link)) { context = APR_RING_FIRST(&factory->head); mpf_context_destroy(context); APR_RING_REMOVE(context, link); }}
开发者ID:Deepwalker,项目名称:FreeSWITCH,代码行数:9,
示例12: rtsp_client_connection_destroy/* Destroy RTSP connection */static apt_bool_t rtsp_client_connection_destroy(rtsp_client_connection_t *rtsp_connection){ rtsp_client_t *client = rtsp_connection->client; APR_RING_REMOVE(rtsp_connection,link); rtsp_client_connection_close(client,rtsp_connection); apt_log(RTSP_LOG_MARK,APT_PRIO_NOTICE,"Destroy RTSP Connection %s",rtsp_connection->id); apr_pool_destroy(rtsp_connection->pool); return TRUE;}
开发者ID:unispeech,项目名称:unimrcp,代码行数:11,
示例13: ap_queue_pop_something/** * Retrieves the next available socket from the queue. If there are no * sockets available, it will block until one becomes available. * Once retrieved, the socket is placed into the address specified by * 'sd'. */apr_status_t ap_queue_pop_something(fd_queue_t * queue, apr_socket_t ** sd, event_conn_state_t ** ecs, apr_pool_t ** p, timer_event_t ** te_out){ fd_queue_elem_t *elem; apr_status_t rv; if ((rv = apr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) { return rv; } /* Keep waiting until we wake up and find that the queue is not empty. */ if (ap_queue_empty(queue)) { if (!queue->terminated) { apr_thread_cond_wait(queue->not_empty, queue->one_big_mutex); } /* If we wake up and it's still empty, then we were interrupted */ if (ap_queue_empty(queue)) { rv = apr_thread_mutex_unlock(queue->one_big_mutex); if (rv != APR_SUCCESS) { return rv; } if (queue->terminated) { return APR_EOF; /* no more elements ever again */ } else { return APR_EINTR; } } } *te_out = NULL; if (!APR_RING_EMPTY(&queue->timers, timer_event_t, link)) { *te_out = APR_RING_FIRST(&queue->timers); APR_RING_REMOVE(*te_out, link); } else { elem = &queue->data[queue->out]; queue->out++; if (queue->out >= queue->bounds) queue->out -= queue->bounds; queue->nelts--; *sd = elem->sd; *ecs = elem->ecs; *p = elem->p;#ifdef AP_DEBUG elem->sd = NULL; elem->p = NULL;#endif /* AP_DEBUG */ } rv = apr_thread_mutex_unlock(queue->one_big_mutex); return rv;}
开发者ID:AzerTyQsdF,项目名称:osx,代码行数:61,
示例14: impl_pollset_addstatic apr_status_t impl_pollset_add(apr_pollset_t *pollset, const apr_pollfd_t *descriptor){ apr_os_sock_t fd; pfd_elem_t *elem; apr_status_t rv = APR_SUCCESS; pollset_lock_rings(); if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) { elem = APR_RING_FIRST(&(pollset->p->free_ring)); APR_RING_REMOVE(elem, link); } else { elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t)); APR_RING_ELEM_INIT(elem, link); } elem->pfd = *descriptor; if (descriptor->desc_type == APR_POLL_SOCKET) { fd = descriptor->desc.s->socketdes; } else { fd = descriptor->desc.f->filedes; } if (descriptor->reqevents & APR_POLLIN) { EV_SET(&pollset->p->kevent, fd, EVFILT_READ, EV_ADD, 0, 0, elem); if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0, NULL) == -1) { rv = apr_get_netos_error(); } } if (descriptor->reqevents & APR_POLLOUT && rv == APR_SUCCESS) { EV_SET(&pollset->p->kevent, fd, EVFILT_WRITE, EV_ADD, 0, 0, elem); if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0, NULL) == -1) { rv = apr_get_netos_error(); } } if (rv == APR_SUCCESS) { APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link); } else { APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link); } pollset_unlock_rings(); return rv;}
开发者ID:Ga-vin,项目名称:apache,代码行数:55,
示例15: assert/** * Get an empty resource container from the free list. */static apr_res_t *get_container(apr_reslist_t *reslist){ apr_res_t *res; assert(!APR_RING_EMPTY(&reslist->free_list, apr_res_t, link)); res = APR_RING_FIRST(&reslist->free_list); APR_RING_REMOVE(res, link); return res;}
开发者ID:Garridon,项目名称:windowsrtdev,代码行数:14,
示例16: apt_timer_removestatic apt_bool_t apt_timer_remove(apt_timer_queue_t *timer_queue, apt_timer_t *timer){ /* remove node (timer) from the list */ APR_RING_REMOVE(timer,link); timer->scheduled_time = 0; if(APR_RING_EMPTY(&timer_queue->head, apt_timer_t, link)) { /* reset elapsed time if no timers set */ timer_queue->elapsed_time = 0; } return TRUE;}
开发者ID:odmanV2,项目名称:freecenter,代码行数:12,
示例17: impl_pollset_removestatic apr_status_t impl_pollset_remove(apr_pollset_t *pollset, const apr_pollfd_t *descriptor){ pfd_elem_t *ep; apr_status_t rv = APR_SUCCESS;#ifdef HAVE_MTCP struct mtcp_epoll_event ev = {0};#else struct epoll_event ev = {0}; /* ignored, but must be passed with * kernel < 2.6.9 */#endif int ret = -1; if (descriptor->desc_type == APR_POLL_SOCKET) {#ifdef HAVE_MTCP int cpu = sched_getcpu(); ret = mtcp_epoll_ctl(g_mctx[cpu], pollset->p->epoll_fd, EPOLL_CTL_DEL, descriptor->desc.s->socketdes, &ev);#else ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_DEL, descriptor->desc.s->socketdes, &ev);#endif } else { ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_DEL, descriptor->desc.f->filedes, &ev); } if (ret < 0) { rv = APR_NOTFOUND; } if (!(pollset->flags & APR_POLLSET_NOCOPY)) { pollset_lock_rings(); for (ep = APR_RING_FIRST(&(pollset->p->query_ring)); ep != APR_RING_SENTINEL(&(pollset->p->query_ring), pfd_elem_t, link); ep = APR_RING_NEXT(ep, link)) { if (descriptor->desc.s == ep->pfd.desc.s) { APR_RING_REMOVE(ep, link); APR_RING_INSERT_TAIL(&(pollset->p->dead_ring), ep, pfd_elem_t, link); break; } } pollset_unlock_rings(); } return rv;}
开发者ID:ATCP,项目名称:mtcp,代码行数:53,
示例18: APR_RING_FIRST/* * NOTE: This function is not thread safe by itself. Caller should hold the lock */static apr_thread_pool_task_t *pop_task(apr_thread_pool_t * me){ apr_thread_pool_task_t *task = NULL; int seg; /* check for scheduled tasks */ if (me->scheduled_task_cnt > 0) { task = APR_RING_FIRST(me->scheduled_tasks); assert(task != NULL); assert(task != APR_RING_SENTINEL(me->scheduled_tasks, apr_thread_pool_task, link)); /* if it's time */ if (task->dispatch.time <= apr_time_now()) { --me->scheduled_task_cnt; APR_RING_REMOVE(task, link); return task; } } /* check for normal tasks if we're not returning a scheduled task */ if (me->task_cnt == 0) { return NULL; } task = APR_RING_FIRST(me->tasks); assert(task != NULL); assert(task != APR_RING_SENTINEL(me->tasks, apr_thread_pool_task, link)); --me->task_cnt; seg = TASK_PRIORITY_SEG(task); if (task == me->task_idx[seg]) { me->task_idx[seg] = APR_RING_NEXT(task, link); if (me->task_idx[seg] == APR_RING_SENTINEL(me->tasks, apr_thread_pool_task, link) || TASK_PRIORITY_SEG(me->task_idx[seg]) != seg) { me->task_idx[seg] = NULL; } } APR_RING_REMOVE(task, link); return task;}
开发者ID:accre,项目名称:lstore-apr-util-accre,代码行数:43,
示例19: impl_pollset_addstatic apr_status_t impl_pollset_add(apr_pollset_t *pollset, const apr_pollfd_t *descriptor){ apr_os_sock_t fd; pfd_elem_t *elem; int res; apr_status_t rv = APR_SUCCESS; pollset_lock_rings(); if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) { elem = APR_RING_FIRST(&(pollset->p->free_ring)); APR_RING_REMOVE(elem, link); } else { elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t)); APR_RING_ELEM_INIT(elem, link); elem->on_query_ring = 0; } elem->pfd = *descriptor; if (descriptor->desc_type == APR_POLL_SOCKET) { fd = descriptor->desc.s->socketdes; } else { fd = descriptor->desc.f->filedes; } /* If another thread is polling, notify the kernel immediately; otherwise, * wait until the next call to apr_pollset_poll(). */ if (apr_atomic_read32(&pollset->p->waiting)) { res = port_associate(pollset->p->port_fd, PORT_SOURCE_FD, fd, get_event(descriptor->reqevents), (void *)elem); if (res < 0) { rv = apr_get_netos_error(); APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link); } else { elem->on_query_ring = 1; APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link); } } else { APR_RING_INSERT_TAIL(&(pollset->p->add_ring), elem, pfd_elem_t, link); } pollset_unlock_rings(); return rv;}
开发者ID:Ga-vin,项目名称:apache,代码行数:52,
示例20: impl_pollset_addstatic apr_status_t impl_pollset_add(apr_pollset_t *pollset, const apr_pollfd_t *descriptor){ struct epoll_event ev = {0}; int ret = -1; pfd_elem_t *elem = NULL; apr_status_t rv = APR_SUCCESS; ev.events = get_epoll_event(descriptor->reqevents); if (pollset->flags & APR_POLLSET_NOCOPY) { ev.data.ptr = (void *)descriptor; } else { pollset_lock_rings(); if (!APR_RING_EMPTY(&(pollset->p->free_ring), pfd_elem_t, link)) { elem = APR_RING_FIRST(&(pollset->p->free_ring)); APR_RING_REMOVE(elem, link); } else { elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t)); APR_RING_ELEM_INIT(elem, link); } elem->pfd = *descriptor; ev.data.ptr = elem; } if (descriptor->desc_type == APR_POLL_SOCKET) { ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_ADD, descriptor->desc.s->socketdes, &ev); } else { ret = epoll_ctl(pollset->p->epoll_fd, EPOLL_CTL_ADD, descriptor->desc.f->filedes, &ev); } if (0 != ret) { rv = apr_get_netos_error(); } if (!(pollset->flags & APR_POLLSET_NOCOPY)) { if (rv != APR_SUCCESS) { APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem, pfd_elem_t, link); } else { APR_RING_INSERT_TAIL(&(pollset->p->query_ring), elem, pfd_elem_t, link); } pollset_unlock_rings(); } return rv;}
开发者ID:Leon555,项目名称:Library-src,代码行数:52,
示例21: impl_pollset_removestatic apr_status_t impl_pollset_remove(apr_pollset_t *pollset, const apr_pollfd_t *descriptor){ pfd_elem_t *ep; apr_status_t rv; apr_os_sock_t fd; pollset_lock_rings(); if (descriptor->desc_type == APR_POLL_SOCKET) { fd = descriptor->desc.s->socketdes; } else { fd = descriptor->desc.f->filedes; } rv = APR_NOTFOUND; /* unless at least one of the specified conditions is */ if (descriptor->reqevents & APR_POLLIN) { EV_SET(&pollset->p->kevent, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0, NULL) != -1) { rv = APR_SUCCESS; } } if (descriptor->reqevents & APR_POLLOUT) { EV_SET(&pollset->p->kevent, fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL); if (kevent(pollset->p->kqueue_fd, &pollset->p->kevent, 1, NULL, 0, NULL) != -1) { rv = APR_SUCCESS; } } for (ep = APR_RING_FIRST(&(pollset->p->query_ring)); ep != APR_RING_SENTINEL(&(pollset->p->query_ring), pfd_elem_t, link); ep = APR_RING_NEXT(ep, link)) { if (descriptor->desc.s == ep->pfd.desc.s) { APR_RING_REMOVE(ep, link); APR_RING_INSERT_TAIL(&(pollset->p->dead_ring), ep, pfd_elem_t, link); break; } } pollset_unlock_rings(); return rv;}
开发者ID:Ga-vin,项目名称:apache,代码行数:52,
示例22: mrcp_client_agent_connection_removestatic apt_bool_t mrcp_client_agent_connection_remove(mrcp_connection_agent_t *agent, mrcp_connection_t *connection){ /* remove from the list */ APR_RING_REMOVE(connection,link); if(connection->sock) { apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close TCP/MRCPv2 Connection %s",connection->id); apt_poller_task_descriptor_remove(agent->task,&connection->sock_pfd); apr_socket_close(connection->sock); connection->sock = NULL; } return TRUE;}
开发者ID:odmanV2,项目名称:freecenter,代码行数:13,
示例23: APR_DECLAREAPR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond){ struct waiter_t *wake; acquire_sem(cond->lock); while (! APR_RING_EMPTY(&cond->alist, waiter_t, link)) { wake = APR_RING_FIRST(&cond->alist); APR_RING_REMOVE(wake, link); release_sem(wake->sem); APR_RING_INSERT_TAIL(&cond->flist, wake, waiter_t, link); } release_sem(cond->lock); return APR_SUCCESS;}
开发者ID:Garridon,项目名称:windowsrtdev,代码行数:15,
示例24: remove_scheduled_tasksstatic apr_status_t remove_scheduled_tasks(apr_thread_pool_t *me, void *owner){ apr_thread_pool_task_t *t_loc; apr_thread_pool_task_t *next; t_loc = APR_RING_FIRST(me->scheduled_tasks); while (t_loc != APR_RING_SENTINEL(me->scheduled_tasks, apr_thread_pool_task, link)) { next = APR_RING_NEXT(t_loc, link); /* if this is the owner remove it */ if (t_loc->owner == owner) { --me->scheduled_task_cnt; APR_RING_REMOVE(t_loc, link); } t_loc = next; } return APR_SUCCESS;}
开发者ID:accre,项目名称:lstore-apr-util-accre,代码行数:20,
示例25: APT_DECLARE/** Kill timer */APT_DECLARE(apt_bool_t) apt_timer_kill(apt_timer_t *timer){ apt_timer_queue_t *queue = timer->queue; if(!timer->scheduled_time) { return FALSE; }#ifdef APT_TIMER_DEBUG apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Kill Timer 0x%x [%u]",timer,timer->scheduled_time);#endif /* remove node (timer) from the list */ APR_RING_REMOVE(timer,link); timer->scheduled_time = 0; if(APR_RING_EMPTY(&queue->head, apt_timer_t, link)) { /* reset elapsed time if no timers set */ queue->elapsed_time = 0; } return TRUE;}
开发者ID:Jared-Prime,项目名称:UniMRCP,代码行数:22,
注:本文中的APR_RING_REMOVE函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ APR_RING_SENTINEL函数代码示例 C++ APR_RING_NEXT函数代码示例 |