Skip to content

Conversation

kuszmaul
Copy link
Contributor

This pull request contains a rewrite of the fair readers-writers lock (frwlock). The old code had bugs (if a spurious wakeup occured from a pthread_cond_wait, the code would fail.) The old code was also complex. I tried making small changes to improve it, and it just was buggy. I reimplemented it, and ran the test-frwlock-fair-writers test, as well as benchmark-test. I also fixed a race condition by making the m_num_writers variable be an atomic integer (since the cache table queries the number of writers without acquiring the lock)

@leifwalsh
Copy link
Contributor

Well github really mangled that email...

Probably shouldn't use std::queue<...>*, should use std::queue<...> instead.

Also, consider std::queue<frwlock_queueitem, std::list<frwlock_queueitem> >. The default container is a deque which might be slower because everyone has to copy items in to one cache line. A linked list of stack allocated objects might be better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants