Skip to content

Instantly share code, notes, and snippets.

@eferm
Created April 12, 2011 13:58
Show Gist options
  • Select an option

  • Save eferm/915530 to your computer and use it in GitHub Desktop.

Select an option

Save eferm/915530 to your computer and use it in GitHub Desktop.

Revisions

  1. eferm revised this gist Apr 12, 2011. 1 changed file with 17 additions and 11 deletions.
    28 changes: 17 additions & 11 deletions persistence.cc
    Original file line number Diff line number Diff line change
    @@ -1,15 +1,21 @@
    write_job* job = new write_job;
    bool finished = false;
    bool Persistence::persist_write(const char* key, size_t key_length,
    const char* value, size_t value_length)
    {
    /* boring code removed */

    job->buf = buf;
    job->slot = job_slot;
    job->finished = &finished;
    write_job* job = new write_job;
    bool finished = false;

    enqueue_write_job(job);
    job->buf = buf;
    job->slot = job_slot;
    job->finished = &finished;

    boost::shared_lock<boost::shared_mutex> lock(write_mutex);
    while (!finished) {
    job_finish.wait(lock);
    }
    enqueue_write_job(job);

    return true;
    boost::shared_lock<boost::shared_mutex> lock(write_mutex);
    while (!finished) {
    job_finish.wait(lock);
    }

    return true;
    }
  2. eferm created this gist Apr 12, 2011.
    15 changes: 15 additions & 0 deletions persistence.cc
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    write_job* job = new write_job;
    bool finished = false;

    job->buf = buf;
    job->slot = job_slot;
    job->finished = &finished;

    enqueue_write_job(job);

    boost::shared_lock<boost::shared_mutex> lock(write_mutex);
    while (!finished) {
    job_finish.wait(lock);
    }

    return true;