guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: The equivalent of racket's break-thread in guile?


From: Xin Wang
Subject: Re: The equivalent of racket's break-thread in guile?
Date: Fri, 31 May 2013 16:44:58 +0800




2013/5/31 Nala Ginrut <address@hidden>
On Fri, 2013-05-31 at 14:24 +0800, Xin Wang wrote:

>
>
> Thank you for pointing out this.
>
>
> After some more search, I found that pthread has function pthread_kill
> [1], which can be used to send signal to specific thread.
>
>
> No sure if it can be used to implement similar behaviour.
>
>
> [1]
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_kill.html


At least in Linux, pthread_kill may effect the whole process:
----------------------------cut----------------------------------
Signal  dispositions  are  process-wide: if a signal handler is
installed, the handler will be invoked in the thread thread,
but if the disposition of the signal is "stop", "continue", or
"terminate", this action will affect the whole process.
----------------------------end----------------------------------

The real solution for your purpose is green-thread IMO.


I see.

But I think it is still doable, although not elegant.

We can establish a signal handler to exit specific thread instead of a global terminate disposition, and then in thread pthread_sigmask() can be used to block that signal temporarily, before calling out-guard part of dynamic-wind.

Some sample C code: https://gist.github.com/dram/5683646



>
>
>         > Regards,
>         > Xin Wang
>
>
>
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]