Duane Searsmith wrote:
Thank you Ken and Attila for your feedback. I think I have a fair understanding of the issues now. I'm going to do some brainstorming over exactly how I would like the threads to interact with the Cells engine and then try some experiments with different locking strategies and see what happens. I'll report back on what I discover.
OK, don't be afraid to ask. And don't forget about lazy cells. :) If you use those, that creates other issues. I don't much.
One thing that might help (or hurt) is that in Cells3 I started forcing the programmer to single-thread model perturbations:
(with-integrity (:change ...) (setf <some-cell> ...)
....and there are multiple queues for follow-up work and propagation arising from any change, including a "client" queue for application work, and one can specify either or both a client queue sort function and client queue handler. So there might be some place to wire in a little thread awareness and let things keep moving despite activity by other threads. And with all that information around, there may also be a way for the programmer to indicate they are taking responsibility for data integrity so Just Let Me Do This. ie, They may know X is against the rules but X is quite safe so Just Do It.
kt