boost::shared_mutex provide capability that multiple reader can read simultaneously and write can wait a while.
Boost implementation is fast since it tries to avoid system call and perform system call only when necessary
http://stackoverflow.com/questions/19478925/why-is-boostmutex-faster-than-stdmutex-as-of-vs2013
http://stackoverflow.com/questions/989795/example-for-boost-shared-mutex-multiple-reads-one-write