Hi,
We'be been using jess with pleasure and success in our current development...
it turns out we're thinking into going to something more elaborate
and questions about threading happen.
Is jess prepared for real multi-threading ?
I have the feeling it is such but I am not too sure.
In particular, we might want to make the following (kind of obvious)
mechanism to replace a pattern like a function call by a message
exchange:
- The function call is launched, the method launching it returns
(making a new thread or doing something more elaborate like buffering).
- When the result is ready a fact is asserted using the Rete object.
This should happen while Jess is still "running" or it might need to
be "restarted"...
Is this imaginable ?
Paul
PS: just found the following in the docs
>Jess can be used in a multithreaded environment. The jess.Rete class
>internally synchronizes itself using several synchronization locks.
>The most important lock is a global lock on all rule LHSs: only one
>assert or retract may be processing int a given jess.Rete object at
>a time. This restriction is likely to be relaxed in the future.
>
I fear we precisely enter in this category: transforming most of the
function calls in such a message-passing mechanisms will have Jess
spend most of its time in fact-assertion (storage distribution ?)
then LHS evaluation. Actually those two things are probably done at
the same time. If they are, then indeed we will have a fair amount of
deadlocks and should provide queues for the entering messages.
Alternatively, version 6 might solve the trouble, ....
---------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list (use your own address!) List problems? Notify [EMAIL PROTECTED]
---------------------------------------------------------------------