Ok, I haven't studied this Actor model so far, let me see if I understood it correctly.
If a message comes in from the network, you determine its target vobject and method(?). You then try to bind/lock the target, and execute its method in a thread you pick from a pool. If the vobject is already bound, you just queue the message for later execution. Once the vobject gets unbound/unlocked, you pick another thread from the pool and pass the queued message to the target method. (Actually, it does not matter whether the message came from the network or some other actor, which is neat). While a vobject method is executing, it can send messages to other vobjects, which either bind and execute the target *in the same thread* or queue a message, as before. In the latter case, you get a future you can query for completion or wait on. Assuming I got it right so far, I wonder what happens if you decide to wait on your future. When you do this, you block the current thread, which nevertheless still holds the locks of / is still bound to one or more vobjects. In other words, the deadlock just waits around the corner - e.g. two vobjects with separate threads and futures for each other. Or does waiting automatically release the blocks/bindings? In that case, what happens once the thread unblocks? And can another thread bind/lock the vobject in the meantime? Slightly puzzled, KAO _______________________________________________ vos-d mailing list [email protected] http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d
