Am Sa., 5. Nov. 2022 um 21:57 Uhr schrieb Marc Nieper-Wißkirchen
<marc.nie...@gmail.com>:
>
> Am Sa., 5. Nov. 2022 um 21:39 Uhr schrieb Shiro Kawai <shiro.ka...@gmail.com>:
> >
> > Is it pushed?  The visible HEAD on github is 6a2319d.
>
> I forgot to push it.  Should be visible now.
>
> >
> > Actually I was composing an email regarding per-thread parameters.  As I'm 
> > revising Gauche to adopt srfi-226, some concern arose from users.  In most 
> > use cases, the existing code that uses parameters for thread local storage 
> > can be rewritten using thread-locals.  However, there are cases that it's 
> > not trivial to migrate; for example, a parameter is defined elsewhere, and 
> > a library mutates it, assuming it's thread-safe.  It is ok if the library 
> > can rewrite it using parameterize to avoid mutation, but it's not always 
> > trivial.  So I plan to provide per-thread parameters at least for a while 
> > during transition.
> >
> > On the other hand, per-thread parameters do seem to complicate 
> > implementation.  My plan is to copy the parameterization chain when a 
> > thread is created, and normal parameters would share a box, while 
> > per-thread parameters would have separate boxes.  It incurs more overhead 
> > of thread creation.   I wonder if there's a better way.
>
> The solution in the sample implementation (see hopefully pushed
> commit) is to use inheritable thread-local cells. For thread
> parameters, parameterize creates a new inheritable thread-local cell
> whose default is the new value.
>
> To speed up thread creation (which needs to copy values of inheritable
> thread locals) observe that only those inheritable thread locals have
> to be copied that have ever been set.  So only those have to be kept
> in a (weak) list.  This means that parameterize means no overhead for
> thread creation, only mutating of a thread parameter.
>
> (I haven't made this optimization in my sample implementation yet.)

It's already too late here: this particular optimization is part of
the sample implementation. But there are other areas where it can be
improved.

> Thank you very much for your feedback!
>
> Marc

Reply via email to