Re: [Haskell-cafe] Concurrency strategy for 2 threads and rare events

2012-02-15 Thread JP Moresmau
Thank you all, I've used a simple IORef and that did the trick. JP 2012/2/8 Edward Amsden eca7...@cs.rit.edu: If you only need one structure for communication (e.g. neither thread needs to lock multiple things) you might consider using an IORef, and writing/polling it with atomicModifyIORef.

[Haskell-cafe] Concurrency strategy for 2 threads and rare events

2012-02-08 Thread JP Moresmau
Hello, I'm wondering what's the best strategy to use in the following scenario: - 2 threads - One perform some work that will take time, possibly go on forever - Another waits for user input (like commands from the keyboard) that affects thread 1 (causing it to stop, in the simplest case)

Re: [Haskell-cafe] Concurrency strategy for 2 threads and rare events

2012-02-08 Thread Erik Hesselink
You could use throwTo to raise an exception in the thread you want to stop. Otherwise, having some variable (IORef, TVar, MVar) that the long running thread occasionally checks seems like a good solution. Erik On Wed, Feb 8, 2012 at 17:04, JP Moresmau jpmores...@gmail.com wrote: Hello, I'm

Re: [Haskell-cafe] Concurrency strategy for 2 threads and rare events

2012-02-08 Thread Yves Parès
Why do you think it's a lot? MVar are a teeny tiny and convenient primitive of communication, and I don't see why they wouldn't suit your need. Sure a throwTo would do the trick... But they're is do the trick and do the job, you see? Using STM and TVars *would* be kind of overkill. 2012/2/8 JP

Re: [Haskell-cafe] Concurrency strategy for 2 threads and rare events

2012-02-08 Thread JP Moresmau
No, I meant they seem to be mainly for the use case where the reading thread blocks for more input, and maybe there's a simpler/more efficient way to quickly check if an event has occurred, that's all. If there isn't then a MVar it will be. JP On Wed, Feb 8, 2012 at 7:35 PM, Yves Parès

Re: [Haskell-cafe] Concurrency strategy for 2 threads and rare events

2012-02-08 Thread Edward Amsden
If you only need one structure for communication (e.g. neither thread needs to lock multiple things) you might consider using an IORef, and writing/polling it with atomicModifyIORef. It's cheaper than an MVar for the case where you don't need to lock multiple threads. On Wed, Feb 8, 2012 at 2:45