Que signifie, pour une méthode asynchrone?
Ce qui est une méthode asynchrone. Je pense que je sais, mais j'ai garder de le confondre avec le parallélisme. Je ne suis pas sûr de ce que la différence entre une méthode asynchrone est et ce parallélisme est.
Aussi quelle est la différence entre le filetage à l'aide de classes et asynchrone des classes?
MODIFIER
Certains de code montrant la différence entre async, le filetage et le parallélisme serait utile.
- Êtes-vous demander à propos de la différence entre faire des I/O dans un thread séparé vs les modèles asynchrones que l'utilisation I/O Ports de fin d'?
- Regardez ici Pour Async: msdn.microsoft.com/en-us/magazine/cc164036.aspx. Pour le MultiThreading: arstechnica.com/features/2002/10/hyperthreading
Vous devez vous connecter pour publier un commentaire.
Quelles sont les méthodes asynchrones?
Méthodes asynchrones venir dans la discussion lorsque nous parlons des opérations potentiellement longues. Généralement, nous avons besoin d'une telle opération à remplir afin de mieux continuer l'exécution du programme, mais nous ne voulons pas en "pause" jusqu'à ce que l'opération est terminée (parce que la suspension peut dire par exemple que l'INTERFACE utilisateur cesse de répondre, ce qui n'est évidemment pas souhaitable).
Une méthode asynchrone est celui que nous appelons à commencer le long de l'opération. La méthode doit faire ce qu'il doit pour lancer l'opération et revenir "très rapidement", de sorte qu'il n'y a pas de retards de traitement.
Méthodes asynchrones généralement retourner un jeton que l'appelant peut utiliser pour la requête si l'opération est terminée et que son résultat a été. Dans certains cas, ils prennent un rappel (délégué) comme argument; lorsque l'opération est terminée ce callback n'est appelé pour signaler à l'appelant que leurs résultats sont prêts et de les transmettre en retour. Cette est couramment utilisée pour la signature de rappel, même si bien sûr, en général, la fonction de rappel peut ressembler à n'importe quoi.
Donc, en fait, qui a exécuté l'opération longue?
Je l'ai dit ci-dessus qu'une méthode asynchrone commence une longueur de l'opération, mais ce n' "démarrer" dans ce contexte? Depuis le retour de la méthode immédiatement, où est le travail réel accompli?
Dans le cas général d'un thread d'exécution doit veiller sur le processus. Puisqu'il n'est pas le thread qui a appelé la méthode async que les pauses, qui le fait? La réponse est, un thread choisi pour cela de la géré pool de threads.
Quel est le lien avec le filetage?
Dans ce contexte, mon interprétation de "thread" est tout simplement que vous avez explicitement à lancer un thread de votre propre et la déléguer à exécuter la tâche en question de façon synchrone. Ce fil va bloquer pour un temps, et sans doute sera le signal de votre "main" thread (qui est libre de poursuivre l'exécution) lorsque l'opération est terminée.
Ce thread peut être sorti du pool de threads (attention: à faire de très longues traitement dans un thread du pool n'est pas recommandé!) ou il pourrait être celui qui vous avez commencé juste pour ce but.
Tout d'abord, qu'est ce qu'une méthode et qu'est ce qu'un thread? Une méthode est un unité de travail que soit (1) effectue un côté utile, à l'instar de l'écriture dans un fichier, ou (2) calcule un résultat, comme une image bitmap d'une fractale. Un thread est une travailleur qui effectue ce travail.
Une méthode est synchrone si afin d'utiliser la méthode pour obtenir l'effet secondaire ou le résultat, votre fils doit faire rien d'autre à partir du point où vous demandez que le travail à faire, jusqu'au moment où c'est fini.
Une méthode est asynchrone si votre thread indique la méthode qu'il a besoin du travail à faire, et la méthode dit "OK, je vais le faire et je vais vous appeler quand il est fini".
Généralement la façon dont une méthode asynchrone est-ce que est-il fait un autre travailleur -- il s'empare d'un thread du pool. Cela est particulièrement vrai si la méthode doit faire un usage intensif du PROCESSEUR. Mais pas toujours; il n'y a pas de exigence qu'une méthode asynchrone tourne un autre thread.
Cela fait-il sens?
Dire que vous devez nettoyer la maison, faire cuire le dîner et mis les enfants au lit.
Synchrone:
Vous nettoyer la maison, puis faire cuire le dîner, puis mettre les enfants au lit.
Parallèle:
Vous embaucher 3 personnes pour nettoyer la maison, faire cuire le dîner et mis les enfants au lit. Mais vous n'avez pas confiance en eux, donc gardez un rôle de surveillance, recherche sur eux et d'attente pour eux à la fin. Seulement quand ils sont tous finis sont-elles payées.
Asynchrone:
Vous un enfant de nettoyer la maison et un autre pour faire cuire le dîner. Lors de chaque ont terminé leurs tâches, ils se mettent au lit, alors que vous mettez vos pieds avec un verre de vin en face de la tv.
D'abord vous devez comprendre que si vous voulez parallélisme toute la structure doivent être parallèles, je veux dire que si vous avez une méthode asynchrone vous avez besoin d'un appel asynchrone.
Dans les services web ou des contenus du web, des méthodes asynchrones peuvent être (juste l'une des nombreuses façons) appelé avec l'AJAX qui est asynchrone. Dans une méthode, vous pouvez avoir plusieurs threads, c'est la principale différence entre les méthodes asynchrones et multiplie les threads.
Et le principal: la différence entre une méthode standard et une méthode asynchrone est que si vous faites 2 appels à une méthode standard dans le même temps à la même contrôleur asynchrone de l'appelant (comme AJAX) le deuxième appel sera juste de commencer lorsque le premier appel a déjà terminé, si les méthodes qui vous a appelés étaient asynchrone à la fois les appels va commencer en même temps, avec de multiples cœurs de serveurs, il peut accomplis par deux (2 appels), la norme de la vitesse.
La vitesse du parallélisme est mesurée par cette la loi.