[gambit-list] thread-cells?

Dimitris Vyzovitis vyzo at hackzen.org
Mon Mar 12 14:44:42 EDT 2018


Ok, I hadn't thought of that.

-- vyzo


On Mon, Mar 12, 2018 at 6:34 PM, Marc Feeley <feeley at iro.umontreal.ca>
wrote:

> Extensions to Gambit threads can be done currently using the
> define-type-of-thread special form.  For example:
>
> (define-type-of-thread mythread
>   constructor: construct-mythread
>   errptr)
>
> (define (make-mythread thunk)
>   (thread-init!
>    (construct-mythread #f)
>    thunk))
>
> (define t
>   (make-mythread
>    (lambda ()
>      (pp (mythread-errptr (current-thread))))))
>
> (mythread-errptr-set! t 'foo)
>
> (thread-start! t)
>
> (thread-join! t)
>
> So I don’t see the need for adding this feature to the basic Gambit
> threads.
>
> Marc
>
>
>
> > On Mar 10, 2018, at 8:45 AM, Dimitris Vyzovitis <vyzo at hackzen.org>
> wrote:
> >
> > Marc,
> >
> > Could we add thread-cells?
> > They can be easily implemented with a per-thread hash-table, that only
> gets initialized if accessed.
> >
> > They are incredibly useful for per thread caches, and probably a lot of
> other things.
> >
> > For instance, I have this common pattern that i see a lot:
> >
> > (def errptr-cache
> >   (make-hash-table-eq weak-keys: #t))
> > (def errptr-cache-mutex
> >   (make-mutex))
> >
> > (def (get-errptr)
> >   (with-lock errptr-cache-mutex
> >     (lambda ()
> >       (cond
> >        ((hash-get errptr-cache (current-thread))
> >         => (lambda (errptr)
> >              (errptr_clear errptr)
> >              errptr))
> >        (else
> >         (let (errptr (check-ptr get-errptr (make_errptr)))
> >           (hash-put! errptr-cache (current-thread) errptr)
> >           errptr))))))
> >
> > and I would like to eliminate both the lock and the weak table.
> >
> > I can add it and make a pr, but I wanted to consult with you first.
> >
> > -- vyzo
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20180312/be945b96/attachment.htm>


More information about the Gambit-list mailing list