On Saturday, 10 May 2025 at 04:52:15 UTC, Python wrote:
Too much code below, but I cannot reduce it more. The issue is
in the main function, I want to pass a delegate to a thread
with a captured value from the surrounding context. At least
this was my expectation, the delegate should capture any stack
value.
Am I doing something wrong?
This is a known issue. See e.g.
https://github.com/dlang/dmd/issues/18108
A workaround is to put the loop body in an additional function,
which is directly called:
```d
for (int i = 0; i < 100; ++i)
{
(){
auto captured = i;
ThreadPool.enqueue(() {
writefln("Item: %d on thread %d, running %d
threads",
captured, Thread.getThis.id, ThreadPool.threads);
});
}();
}
```