diff options
author | Yann Ylavic <ylavic@apache.org> | 2018-04-03 22:00:10 +0000 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2018-04-03 22:00:10 +0000 |
commit | 7e2b7474590594b59fdc5100c3f99916b3fba416 (patch) | |
tree | 10c59a2142a8a4228e0cbe0ea77d6a72c73b4792 /util-misc | |
parent | b65dc8e8c0c66979132bff9162658ef0123e7771 (diff) | |
download | apr-7e2b7474590594b59fdc5100c3f99916b3fba416.tar.gz |
reslist: Add apr_reslist_fifo_set().
This allows to reuse resources in FIFO mode instead of the default LIFO mode.
[Reverted by r1829102]
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1828289 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'util-misc')
-rw-r--r-- | util-misc/apr_reslist.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/util-misc/apr_reslist.c b/util-misc/apr_reslist.c index ecc17a7d4..57b583089 100644 --- a/util-misc/apr_reslist.c +++ b/util-misc/apr_reslist.c @@ -58,6 +58,7 @@ struct apr_reslist_t { apr_thread_mutex_t *listlock; apr_thread_cond_t *avail; #endif + int fifo; }; /** @@ -80,7 +81,12 @@ static apr_res_t *pop_resource(apr_reslist_t *reslist) */ static void push_resource(apr_reslist_t *reslist, apr_res_t *resource) { - APR_RING_INSERT_HEAD(&reslist->avail_list, resource, apr_res_t, link); + if (reslist->fifo) { + APR_RING_INSERT_TAIL(&reslist->avail_list, resource, apr_res_t, link); + } + else { + APR_RING_INSERT_HEAD(&reslist->avail_list, resource, apr_res_t, link); + } resource->freed = apr_time_now(); reslist->nidle++; } @@ -434,6 +440,11 @@ APR_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist, reslist->timeout = timeout; } +APR_DECLARE(void) apr_reslist_fifo_set(apr_reslist_t *reslist, int to) +{ + reslist->fifo = to; +} + APR_DECLARE(apr_uint32_t) apr_reslist_acquired_count(apr_reslist_t *reslist) { apr_uint32_t count; |