On Jan 19, 9:00 pm, "Brendan Miller" <catph...@catphive.net> wrote: > Maybe I'm missing something here but a lock free algorithm for > reference counting seems pretty trivial. As long as you can atomically > increment and decrement an integer without locking you are pretty much > done.
"lock free" is largely meaningless. What it really means is "we use small hardware locks rather than big software locks, thereby reducing (but not eliminating!) the contention". Atomic refcounting is easy. If done sparingly to minimize contention it works great. Python uses refcounting massively with heavily contended objects (think about your builtin types, constants, globals, classes, etc.) It does not perform acceptably for python. The second issue is the objects themselves, like a list which is mutable. If you're using it in a single thread or writing from multiple threads this is a non-trivial constant cost. If your object is not modified after creation and is read from many threads a lock would be a point of contention, preventing you from scaling freely. The dicts used by classes and globals are an import example of this, and a successful implementation needs something non-contending. I assume Jython and IronPython do this. -- http://mail.python.org/mailman/listinfo/python-list