GC + thread

From: Christophe Raffalli (Christophe.Raffalli@univ-savoie.fr)
Date: Tue Feb 29 2000 - 16:49:14 MET

  • Next message: Max Skaller: "Nice feature"

    The following extension for Ocaml GC seems to me simple and necessary (I
    really do need it):

    It considers only channels dans thread and I will describe it for a mark
    and swip GC.

    rule 1: a channel can be marked by the GC in two ways: read or write.
    rule 2: a channel that is accssible by the GC in the usual way is both
    marked read and write
            (usual means in a way no covered by rule 3).
    rule 3: if a closure if blocked while trying to read from channel R_1,
    ..., R_n
                                             or to write from channel W_1,
    ..., W_n
            - the channels R_1,..,R_n are marked as read
            - the channels W_1,..,W_n are marked as write
            - the closure will be examined by the GC if and only if
              one the channel R_i is marked write or one the channel W_i is
    marked read
              if the condition is not immidiately true, the examination of
    the closure is
              postponed.
            - if no channel R_i are marked write and no channel W_i are
    marked
               read at the end of the mark pass, the closure and the
    corresponding thread
              can be safely destroyed (the thread will never wake up).

    So clearly this require only a modification of the GC of blocked thread
    and needs to keep to extra bits for channels (this is not a big cost).

    I would be good to also introduce mono-directional channel (the function
    create return a pair with an in_channel and an out_channel). In this
    case the GC ca be optimized to collect more threads in a trivial way
    (when the GC reaches the in part of a channel it is only marked read and
    if the GC reaches the out part of a channel it is only marked write).

    This extension is also necessary (it is easy to have realistic examples
    where the GC would collect much more thread with this extension).

    What do you think of that ?

    -- 
    Christophe Raffalli
    Université de Savoie
    Batiment Le Chablais, bureau 21
    73376 Le Bourget-du-Lac Cedex
    

    tél: (33) 4 79 75 81 03 fax: (33) 4 79 75 87 42 mail: Christophe.Raffalli@univ-savoie.fr www: http://www.lama.univ-savoie.fr/~RAFFALLI



    This archive was generated by hypermail 2b29 : Wed Mar 01 2000 - 18:10:32 MET