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

Reply via email to