PerconaFT icon indicating copy to clipboard operation
PerconaFT copied to clipboard

Reimplement frwlock

Open kuszmaul opened this issue 10 years ago • 1 comments

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)

kuszmaul avatar Dec 28 '15 21:12 kuszmaul

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.

leifwalsh avatar Dec 28 '15 23:12 leifwalsh