var options = new ParallelOptions
{
    MaxDegreeOfParallelism = 8,
    CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
    async (endpoint, token) =>
    {
        var result = await ProbeAsync(endpoint, target, token);
        observations.Add(result);
    });

Použite obmedzený fond pracovníkov namiesto spúšťania samostatnej úlohy pre každý koncový bod. Pri kontrolách povolených verejných cieľov dodáva zoznam bezplatných proxy kandidátske riadky; pri zostavovaní sondy zachovajte protokol každého záznamu. Tento fragment plánovania .NET predpokladá ProbeAsync, ktorý pozná proxy, a zberač observations bezpečný voči vláknam. Osmička je ilustratívna hranica, nie namerané optimum. Sonda stále potrebuje limity na pokus a zrušenie celej úlohy.

Uchovávajte každý dokončený výsledok spolu s jeho vstupom, aj keď sa poradie dokončenia líši. Zaznamenajte protokol, koncový bod, cieľ, metódu, uplynutý čas a výsledok. Zlyhanie spojenia, odmietnutie prihlásenia k proxy, odmietnutý CONNECT a prijatá odpoveď webu sú rôzne pozorovania.

Otvorený port TCP nepreukazuje vyjednávanie s proxy. Načítanie adresy proxy ako webu sa tiež líši od jej použitia na požiadavku cieľa.

Vyberte cieľ a metódu podľa požadovanej schopnosti. HEAD môže ušetriť prevádzku tela, ale nepreukazuje, že GET vracia užitočný obsah; web môže jedno odmietnuť a druhé povoliť. HTTPS pridáva CONNECT a TLS cieľa, ktoré v jednoduchom HTTP chýbajú. Výstupná adresa je ďalšie pozorovanie na strane cieľa, oddelené od nakonfigurovaného vstupu.

Obmedzená práca bráni kontrole vyčerpať vlastné sockety, pamäť alebo plánovač skôr, než môže posúdiť trasu. Etapový výsledok zostáva užitočný pre politiku výberu bez predstierania, že jeden úspešný cieľ robí koncový bod univerzálne dobrým.

Súvisiace články