Ken Tilton [EMAIL PROTECTED] writes:
sross wrote:
I do wonder what would happen to Cells if I ever want to support
multiple threads. Or in a parallel processing environment.
AFAIK It should be fine.
In LW, SBCL and ACL all bindings of dynamic variables are thread-local.
Ah, I was guilty of making an unspoken segue: the problem is not with
the *dependent* special variable, but with the sequentially growing
numeric *datapulse-id* (the ID) that tells a cell if it needs to
recompute its value. The ID is not dynamically bound. If threads T1
and T2 each execute a toplevel, imperative assignment, two threads
will start propagating change up the same dependency
graph... shudder
Might need to specify a main thread that gets to play with Cells and
restrict other threads to intense computations but no Cells?
Hmmm. I am wondering if a Cells Manager class could be the home for
all Cells. Each thread could the have its own Cells Manager...
Actually, I got along quite a while without an ID, I just propagated
to dependents and ran rules. This led sometimes to a rule running
twice for one change and transiently taking on a garbage value, when
the dependency graph of a Cell had two paths back to some changed
Cell.
Well, Cells have always been reengineered in the face of actual use
cases, because I am not really smart enough to work these things out
in the abstract. Or too lazy or something. Probably all three.
Nah. It's me asking again and again those silly questions about
real Cells usage in some real life apps ;-)
Frank
--
http://mail.python.org/mailman/listinfo/python-list