
Ion GaztaƱaga wrote:
For what I've seen in code, read_write_mutex has a lot of options regarding reader/writer priorities and for that uses conditions and mutexes to offer that functionality. The overhead is bigger than mutexes, but I think the critical section you have chosen is very small, and where read_writer_mutex shines is when you have to lock expensive operations (lookups for example, in data-bases) with lots of readers. In that case, a mutex would serialize all, but read_writer_mutex would allow concurrent readers.
Yes. However my suspicion is that read/write locks only speed up code that has been written in an inefficient (MT-unfriendly) way. For high performance, critical regions need to be as small and quick as possible, and read/write locks appear to target the case where the critical regions are relatively large and slow.