unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Xin Wang <dram.wang@gmail.com>
To: Nala Ginrut <nalaginrut@gmail.com>
Cc: "Guile User" <guile-user@gnu.org>, "Ludovic Courtès" <ludo@gnu.org>
Subject: Re: The equivalent of racket's break-thread in guile?
Date: Sun, 2 Jun 2013 09:11:28 +0800	[thread overview]
Message-ID: <CAHjSAjWPq4C6eq2SNMQjr_RUMWF9vkUCw5vw1dzbjVswd252Aw@mail.gmail.com> (raw)
In-Reply-To: <CAPjoZoeAM8L+tf0iYOzoh1LCJAB1saN5UNfU=mHajkmVbBX97g@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2549 bytes --]

2013/6/2 Nala Ginrut <nalaginrut@gmail.com>

> If you just need to handle HTTP request or build webapp, I suggest you use
> my web framework Artanis. It uses Guile inner sever based on thread.
>

Thanks, I'll have a look at it.

Recently I need to deploy a Hacker News[1] like service. Paul Graham has
released its source with Arc.

PG has not release updated versions for several years, so I think I will
need to maintain and fix bugs by myself, and I'd prefer to do such things
in Guile instead of Racket.

Currently I'll use Racket to run this service, and it would be great if it
can be replaced by Guile eventually.

[1] https://news.ycombinator.com/



> 在 2013-6-2 AM7:49,"Xin Wang" <dram.wang@gmail.com>写道:
>
>
>>
>>
>> 2013/5/31 Ludovic Courtès <ludo@gnu.org>
>>
>>> Xin Wang <dram.wang@gmail.com> skribis:
>>>
>>> > In Guile, the equivalent of kill-thread is cancel-thread, and is there
>>> any
>>> > equivalent of break-thread?
>>> >
>>> > [1] http://docs.racket-lang.org/reference/breakhandler.html
>>>
>>> If I understand correctly, “breaks” are similar to Guile’s “asyncs”
>>> (info "(guile) Asyncs").
>>>
>>> However, I don’t understand what you’re trying to achieve.  Could you
>>> give another example of the behavior you’re after?
>>>
>>>
>> I was reading source code of Arc language[1], and wondering if it is
>> possible to port it to Guile.
>>
>> It define a function to handle HTTP request in srv.arc(L48):
>>
>> (def handle-request-1 (s)
>>   --- pruned ---
>>             (with (th1 nil th2 nil)
>>               (= th1 (thread
>>                        (after (handle-request-thread i o ip)
>>                               (close i o)
>>                               (kill-thread th2))))
>>               (= th2 (thread
>>                        (sleep threadlife*)
>>                        (unless (dead th1)
>>                          (prn "srv thread took too long for " ip))
>>                        (break-thread th1)
>>                        (force-close i o))))))))
>>
>> It create two threads to handle a request, one do main stuff and anthor
>> one wait to kill first one if it takes too much time.
>>
>> Although I'm not quite sure, I think one reason to use 'kill-thread' and
>> 'break-thread' differently is to make sure that exception handler function
>> is fully executed. ('after' is implemented by  dynamic-wind).
>>
>> [1] http://ycombinator.com/arc/*arc3.1.tar*
>>
>>
>>> Thanks,
>>> Ludo’.
>>>
>>>
>>>
>>

[-- Attachment #2: Type: text/html, Size: 5507 bytes --]

  reply	other threads:[~2013-06-02  1:11 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-30 23:40 The equivalent of racket's break-thread in guile? Xin Wang
2013-05-31  3:59 ` Nala Ginrut
2013-05-31  6:24   ` Xin Wang
2013-05-31  6:55     ` Nala Ginrut
2013-05-31  8:44       ` Xin Wang
2013-05-31 10:33         ` Xin Wang
2013-05-31 12:16       ` Chaos Eternal
2013-06-01 23:27         ` Xin Wang
2013-05-31 10:01 ` Ludovic Courtès
2013-06-01 23:49   ` Xin Wang
2013-06-02  0:34     ` Nala Ginrut
2013-06-02  1:11       ` Xin Wang [this message]
2013-06-02 13:51     ` Ludovic Courtès
2013-06-03  1:37       ` Xin Wang
2013-06-03 10:12         ` Ludovic Courtès
2013-05-31 11:20 ` Taylan Ulrich B.
2013-05-31 23:28   ` Thien-Thi Nguyen
2013-06-01  6:46     ` Taylan Ulrich B.
2013-06-01 16:08       ` Thien-Thi Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHjSAjWPq4C6eq2SNMQjr_RUMWF9vkUCw5vw1dzbjVswd252Aw@mail.gmail.com \
    --to=dram.wang@gmail.com \
    --cc=guile-user@gnu.org \
    --cc=ludo@gnu.org \
    --cc=nalaginrut@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).