On 2 August 2014 13:02, Bert Huijben <b...@qqmail.nl> wrote:
>         Hi,
>
> With this mail I would like to ping the original problem with the second
> patch I send to the list. This patch doesn't have the likely original
> problems of potentially changing the lock behavior to a spin lock, but
> provides all the performance improvements anyway.
>
> It just replaces the Windows inter-proces mutex in the apr code with the
> already existing apr-mutex implementation, which is usually implemented as
> the far more efficient Windows in-process Critical section.
>
> This makes the implementation 10* to 140* times more efficient on Windows
> and more similar to the performance on other platforms. A performance fix
> like this is critical for Subversion, or we would have to implement our own
> r/w locking implementation for our caching infrastructure.
>
Hi Bert,

Comments on your patch:
1. It seems behavior of apr_thread_rwlock_create() functions changes a
bit: code in trunk intializes output *rwlock pointer to NULL in case
of error, while your patch returns pointer to partially initialized
object. It seems that apr_thread_rwlock_create() doesn't have API
promise to initalize output to NULL, but I think it's better to leave
current behavior.

2. The apr_thread_rwlock_unlock() currently uses checked mutex
behavior for its logic. This is possible reason why current rwlock
implementation uses OS mutexes instead of cirtical sections. I don't
see problem with proposed change  though.


-- 
Ivan Zhakov

Reply via email to