[D-runtime] About a suspension comment in core.thread
Sean Kelly
sean at invisibleduck.org
Fri Jun 22 16:32:59 PDT 2012
On Jun 22, 2012, at 1:19 PM, Alex Rønne Petersen wrote:
> Hey,
>
> In core.thread:suspend(), there is this comment:
>
> // NOTE: It's really not ideal to wait for each thread to
> // signal individually -- rather, it would be better to
> // suspend them all and wait once at the end. However,
> // semaphores don't really work this way, and the obvious
> // alternative (looping on an atomic suspend count)
> // requires either the atomic module (which only works on
> // x86) or other specialized functionality. It would
> // also be possible to simply loop on sem_wait at the
> // end, but I'm not convinced that this would be much
> // faster than the current approach.
> sem_wait( &suspendCount );
>
> Has this turned out to be a performance problem in practice? These
> days, core.atomic works everywhere (LDC and GDC use intrinsics), so
> using that should be trivial. But I don't want to bother with this if
> no one has had performance problems with this suspension strategy
> anyway.
No one has complained, but this isn't a performance issue that could really be seen from the user side. It would definitely speed up the suspend process, but this is such a small part of the collection process that the actual difference may be negligible. It would be easy enough to change to looping on sam_wait at the end though, and see if there's any difference.
More information about the D-runtime
mailing list