Removing some of the elements from vibe.core.concurrency.Future[] futurelist

kerdemdemir kerdemdemir at hotmail.com
Tue Oct 31 08:18:37 UTC 2017


> I'd take a look at why the error message says
> `Future!(UserData)[]) to Future!(AnalyzeData)[]`
> is AnalyzeData  the type returned by ProcessResponceData?
>
> Alternatively you could use a singly linked list and splice out 
> elements that pass the filter predicate. I think you'd have to 
> roll your own though.

I am sorry Wilson I normally in my code UserData is AnalyzeData = 
UserData but I replace the name to make it more understandable.

For now I solved my problem like

vibe.core.concurrency.Future!(UserData)[] futurelist;
foreach( elem; elemList )
{
     auto future = vibe.core.concurrency.async( 
&elem.makeWebRequest );
     futurelist ~= future;
}

int maximumSleepTime = 0;
while(futurelist.any!(a => !a.ready())) //--> Blocking until all 
of them ready
{
     maximumSleepTime++;
     sleep(10.msecs);
     if ( maximumSleepTime  > 2000 )
       return;
}

futurelist.each!(a=> Process(a.getResult()));

Unfortunately that is really bad when I make 250 web requests and 
only one of them is bad(I mean not ready). And 249 request have 
to wait for the bad one.

I will take a deeper look to data structure you suggested.

Thanks


More information about the Digitalmars-d-learn mailing list