[Openmcl-devel] Fine-grained locking
dherring at tentpost.com
Thu Mar 19 06:53:25 UTC 2009
On Tue, 17 Mar 2009, Ian Eslick wrote:
> Clozure is my performance target and I would like some input on the
> relative costs of two approaches to concurrency: fine-grained locking
> and copy-on-write.
I don't have the code/numbers handy, but I wrote a simple C test that
timed various synchronization techniques. If single async/plain memory
write had a cost of 1, then a single uncontested CAS had a cost of ~10 and
an uncontested pthread lock/unlock had a cost of ~100.
For many data structures, copy-on-write is a clear win since you don't
need to copy the data, just a pointer/reference.
As far as locking patterns go,
- If you have multiple locks, design a full ordering for their use so you
never have two threads lock them in different orders.
- Lock the smallest sections possible.
- Lock as few times as possible.
More information about the Openmcl-devel