Am Fr., 30. Sept. 2022 um 21:15 Uhr schrieb John Cowan <[email protected]>:

[...]

> 5. I recommend the addition of a simple thread-runner facility.  A 
> thread-runner is an opaque object with which threads can be registered by 
> passing it as an optional argument to `make-thread!`.  The procedure 
> `with-thread-runner` takes a procedure *proc* and invokes it with a newly 
> allocated thread-runner.  The purpose of `with-thread-runner` is to keep the 
> forking and joining of threads within the lexical scope of *proc*, so as to 
> avoid thread-level spaghetti code.
>
> When *proc* returns, `with-thread-runner` waits for all registered threads to 
> terminate normally or abnormally, and then returns a list of the threads in 
> arbitrary order. It is then possible to use `thread-wait` on any of these 
> threads to extract their results.  `With-thread-runner` should perhaps take a 
> second, optional, argument which is a timeout.
>
> Acknowledgement: the Python library Trio.

I am still thinking about this, and what's the best way to realize
`with-thread-runner'.  What do you mean by "within the lexical scope
of *proc*"?  Do you mean the dynamic extent?  Should *proc* be wrapped
in an unwind-protect not allowing to reenter it?

I am also still hoping for a reply from Marc in the discussion about
"weak threads".

[...]

Reply via email to