RE: [Haskell-cafe] killing a running thread interactively
Haskell doesn't, but the compilers all support a kind of global mutable variable. See various lengthy discussions on the topic on this list and the Haskell list in the past. Briefly, you do it like this: {-# NOILINE var #-} var :: IORef [ThreadId] var = unsafePerformIO (newIORef []) and if you're using GHC, compile the module with -fno-cse. Cheers, Simon On 22 September 2005 17:58, S. Alexander Jacobson wrote: Ok, I didn't think Haskell had mutable global variables. How would this work? -ALex- On Thu, 22 Sep 2005, Simon Marlow wrote: There's no getAllThreadIds or similar right now. You have to save the ThreadIds yourself, perhaps in a global variable. Writing to a file doesn't work because there's no instance Read ThreadId. Cheers, Simon On 21 September 2005 21:14, S. Alexander Jacobson wrote: More particularly, is there a getAllThreadIds function somewhere? -Ale- On Wed, 21 Sep 2005, S. Alexander Jacobson wrote: Is the general pattern to write all threadIds to a file, and then have a separate function that takes the file and kills them? Or is there something more clever? -Alex- On Wed, 21 Sep 2005, Simon Marlow wrote: On 16 September 2005 20:42, S. Alexander Jacobson wrote: If I am running a server interactively. (using ghci). Is there any way to kill its running threads without terminating the interpreter? If you can get ThreadIds for the threads, yes. GHCi doesn't (currently) create a new thread for each expression evaluation, so attempting to kill that thread might kill your GHCi session (it shouldn't but that's another story). Cheers, Simon ** CRM114 Whitelisted by: [EMAIL PROTECTED] ** __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com ** CRM114 Whitelisted by: [EMAIL PROTECTED] ** __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
RE: [Haskell-cafe] killing a running thread interactively
There's no getAllThreadIds or similar right now. You have to save the ThreadIds yourself, perhaps in a global variable. Writing to a file doesn't work because there's no instance Read ThreadId. Cheers, Simon On 21 September 2005 21:14, S. Alexander Jacobson wrote: More particularly, is there a getAllThreadIds function somewhere? -Ale- On Wed, 21 Sep 2005, S. Alexander Jacobson wrote: Is the general pattern to write all threadIds to a file, and then have a separate function that takes the file and kills them? Or is there something more clever? -Alex- On Wed, 21 Sep 2005, Simon Marlow wrote: On 16 September 2005 20:42, S. Alexander Jacobson wrote: If I am running a server interactively. (using ghci). Is there any way to kill its running threads without terminating the interpreter? If you can get ThreadIds for the threads, yes. GHCi doesn't (currently) create a new thread for each expression evaluation, so attempting to kill that thread might kill your GHCi session (it shouldn't but that's another story). Cheers, Simon ** CRM114 Whitelisted by: [EMAIL PROTECTED] ** __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
RE: [Haskell-cafe] killing a running thread interactively
Ok, I didn't think Haskell had mutable global variables. How would this work? -ALex- On Thu, 22 Sep 2005, Simon Marlow wrote: There's no getAllThreadIds or similar right now. You have to save the ThreadIds yourself, perhaps in a global variable. Writing to a file doesn't work because there's no instance Read ThreadId. Cheers, Simon On 21 September 2005 21:14, S. Alexander Jacobson wrote: More particularly, is there a getAllThreadIds function somewhere? -Ale- On Wed, 21 Sep 2005, S. Alexander Jacobson wrote: Is the general pattern to write all threadIds to a file, and then have a separate function that takes the file and kills them? Or is there something more clever? -Alex- On Wed, 21 Sep 2005, Simon Marlow wrote: On 16 September 2005 20:42, S. Alexander Jacobson wrote: If I am running a server interactively. (using ghci). Is there any way to kill its running threads without terminating the interpreter? If you can get ThreadIds for the threads, yes. GHCi doesn't (currently) create a new thread for each expression evaluation, so attempting to kill that thread might kill your GHCi session (it shouldn't but that's another story). Cheers, Simon ** CRM114 Whitelisted by: [EMAIL PROTECTED] ** __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com ** CRM114 Whitelisted by: [EMAIL PROTECTED] ** __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
RE: [Haskell-cafe] killing a running thread interactively
On 16 September 2005 20:42, S. Alexander Jacobson wrote: If I am running a server interactively. (using ghci). Is there any way to kill its running threads without terminating the interpreter? If you can get ThreadIds for the threads, yes. GHCi doesn't (currently) create a new thread for each expression evaluation, so attempting to kill that thread might kill your GHCi session (it shouldn't but that's another story). Cheers, Simon ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
RE: [Haskell-cafe] killing a running thread interactively
Is the general pattern to write all threadIds to a file, and then have a separate function that takes the file and kills them? Or is there something more clever? -Alex- On Wed, 21 Sep 2005, Simon Marlow wrote: On 16 September 2005 20:42, S. Alexander Jacobson wrote: If I am running a server interactively. (using ghci). Is there any way to kill its running threads without terminating the interpreter? If you can get ThreadIds for the threads, yes. GHCi doesn't (currently) create a new thread for each expression evaluation, so attempting to kill that thread might kill your GHCi session (it shouldn't but that's another story). Cheers, Simon ** CRM114 Whitelisted by: [EMAIL PROTECTED] ** __ S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe