[Haskell-cafe] Need a concurrency advice

Dean Herington heringtonlacey at mindspring.com
Mon Aug 22 23:36:34 EDT 2005


At 3:39 PM +0000 8/22/05, Dinh Tien Tuan Anh wrote:
>Hi,
>Basically, my program has 7 threads for 7 rules
>
>Rule1
>Rule2
>..
>..
>..
>
>
>and they all use pattern-mattching (a rule MUST be evaluated by a thread)
>
>The problem is there are some overlapping rules, which match the 
>same pattern and diifferent rules are likely to give different 
>results (one rule might give a result, others might loop forever).
>
>Also, for a particular pattern, there's at least one matching rule 
>and there may be some rule looping forever (try to evaluate a 
>"bottom" _|_)
>
>Im thinking of getting a list of all the applicable rules for a 
>pattern, then hopefully can choose the best rule out of it.  But we 
>have no control over the scheduling of threads, so dont know when a 
>thread finishs its evaluation (if it is applicable rule) or it just 
>never terminates (rule that tries evaluating a _|_)
>
>So any ideas ?

If you can't choose a single best rule, you could start a thread on 
each of the applicable rules and let them "race" each other.  The 
first to complete would provide the result and terminate its 
"competitors".  Concurrent Haskell 
(http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control.Concurrent.html) 
provides the facilities you'd need.

Dean


More information about the Haskell-Cafe mailing list