Esempio n. 1
0
void stop_assoc_maintenance_thread() {
    cb_mutex_enter(&cache_lock);
    do_run_maintenance_thread = 0;
    cb_cond_signal(&maintenance_cond);
    cb_mutex_exit(&cache_lock);

    /* Wait for the maintenance thread to stop */
    cb_join_thread(maintenance_tid);
}
Esempio n. 2
0
File: work.c Progetto: membase/moxi
int work_collect_count(work_collect *c, int count) {
    int rv = 0;
    cb_mutex_enter(&c->collect_lock);
    c->count = count;
    if (c->count <= 0) {
        cb_cond_signal(&c->collect_cond);
    }
    cb_mutex_exit(&c->collect_lock);
    return rv;
}
Esempio n. 3
0
File: work.c Progetto: membase/moxi
int work_collect_one(work_collect *c) {
    int rv = 0;
    cb_mutex_enter(&c->collect_lock);
    cb_assert(c->count >= 1);
    c->count--;
    if (c->count <= 0) {
        cb_cond_signal(&c->collect_cond);
    }
    cb_mutex_exit(&c->collect_lock);
    return rv;
}
Esempio n. 4
0
/*
 * Adds an item to a connection queue.
 */
static void cq_push(CQ *cq, CQ_ITEM *item) {
    item->next = NULL;

    cb_mutex_enter(&cq->lock);
    if (NULL == cq->tail)
        cq->head = item;
    else
        cq->tail->next = item;
    cq->tail = item;
    cb_cond_signal(&cq->cond);
    cb_mutex_exit(&cq->lock);
}
Esempio n. 5
0
/*
 * Worker thread: main event loop
 */
static void worker_libevent(void *arg) {
    LIBEVENT_THREAD *me = arg;

    /* Any per-thread setup can happen here; thread_init() will block until
     * all threads have finished initializing.
     */

    cb_mutex_enter(&init_lock);
    init_count++;
    cb_cond_signal(&init_cond);
    cb_mutex_exit(&init_lock);

    event_base_loop(me->base, 0);
}
Esempio n. 6
0
/* grows the hashtable to the next power of 2. */
static void assoc_expand(void) {
    old_hashtable = primary_hashtable;

    primary_hashtable = calloc(hashsize(hashpower + 1), sizeof(void *));
    if (primary_hashtable) {
        if (settings.verbose > 1)
            moxi_log_write("Hash table expansion starting\n");
        hashpower++;
        expanding = true;
        expand_bucket = 0;
        cb_cond_signal(&maintenance_cond);
    } else {
        primary_hashtable = old_hashtable;
        /* Bad news, but we can keep running. */
    }
}