C++ std:async with a concurrency limit (via semaphores)
raymii.org