I am running many tasks parallel like:

vibe.core.concurrency.Future!(bool)[] futureList;
foreach ( currency ; currencyList)
	futureList ~= vibe.core.concurrency.async(&DoSomething, pointerParamater);

int counter = 0; 
while(futureList.any!(a => !a.ready())) //--> Blocking until all of them ready
	if ( counter > 14 )
		return false;

return true;

I am having a simple time out and bailing on the function after a timeout.
The problem is I afraid the task which weren't ready are still running in the background and modifying pointer parameter which causes a race condition.

I think my simple solution is before exiting this function running through not ready task and stopping them. This is of course if stop functionality exists. Does it exists? Do you guys know a better solution ?