J'ai un thread qui se connecte à deux ressources réseau. Chaque fois que je tente une connexion, la réponse peut prendre 10 secondes.Renvoie les valeurs de deux méthodes longues, en utilisant des threads
void MyThread()
{
//this takes ten seconds
Resource r1 = MySystem.GetResource(ipAddress1);
//this takes ten seconds
Resource r2 = MySystem.GetResource(ipAddress2);
//do stuff with ep1 and ep2
}
Temps total est de vingt secondes, mais je voudrais vraiment à prendre seulement dix secondes - fils lancement chaque fois que j'appelle GetResource, recevoir une réponse, puis se joindre à chaque thread pour rendre le contrôle.
Quelle est la meilleure façon de faire cela? Lancez deux threads qui retournent chacun une valeur? Des méthodes anonymes qui prennent des références aux variables locales? J'ai la tête qui tourne. Le code est apprécié.
J'aime aussi celui-ci. J'espère que la communauté peut m'aider à trouver la meilleure approche – MedicineMan
Par curiosité, y avait-il une raison pour laquelle vous avez choisi de mettre en arrière les deux initialisations? D'après ce que je peux voir, vous aurez maintenant la surcharge de deux threads d'arrière-plan, tandis que le thread principal est inactif et attend qu'ils finissent. –
@Jesse Squire: C'est juste une illustration. Pour tout ce que je sais, l'application réelle pourrait avoir N ressources où N> 2. Le thread principal peut avoir d'autres choses qu'il veut faire avant de faire le 'Join's. –