Iain Hibbert <[email protected]> wrote: > > RW locks have some performance problems, and they should not be used > > until it's needed. I think that same think can be accomplished by using > > reference counters and mutexes/cv variables. > > Is that in general or is that just our implementation? I mean, if the > same thing can be made out of mutex/refcount/condvar, and if rwlocks are > generally useful then can the rwlock code be reimplemented in a more > efficient manner?
It is a general problem with RW-lock on MP systems. Basically, there is still a mutual exclusion on a reader side, because of state (i.e. lock data) modification, which means cache-line locking and data synchronisation with other CPUs (at hardware level). However, it does not mean that RW-lock should be abandoned, e.g. RW-lock is suitable for heavy-weight synchronisation or paths which are not that often and/or performance-critical. -- Mindaugas
