Quelle est la différence entre les E / S asynchrones et les fonctions asynchrones?
Node.js, est un asynchronous I/o qu'est-ce cela signifie réellement?
Est-il différent entre les deux j'ai créer une fonction async par la ponte d'un autre thread pour faire le processus?
par exemple
void asyncfuntion(){
Thread apple = new Thread(){
public void run(){
...do stuff
}
}
apple.start()
}
Si il ya une différence, je peux faire un I/O asynchrone en javascript?
source d'informationauteur Kit Ho
Vous devez vous connecter pour publier un commentaire.
Asynchronous I/O
Asynchronous I/O (article de Wikipédia)
Ce que cela signifie est que, si un processus veut faire un
read()
ouwrite()
dans un appel synchrone, le processus devra attendre jusqu'à ce que le matériel finitions d'e/S physiques afin qu'il puisse être informé de la réussite/l'échec de l'opération d'e/S.Sur le mode asynchrone, une fois les questions de processus de lecture/écriture d'e/S asynchrone, les appels système est immédiatement retourné une fois que l'I/O a été transmis à l'élément matériel ou dans la file d'OS/VM. Ainsi, l'exécution du processus n'est pas bloqué (donc pourquoi il est appelé non-blocage I/O), car il n'a pas besoin d'attendre le résultat de l'appel système, il va recevoir le résultat plus tard.
Asynchrone Fonction
Asynchrone fonctions est une fonction qui retourne les données de l'appelant par un moyen de gestionnaire d'événement (ou fonctions de rappel). La fonction de rappel peut être appelé à tout moment (en fonction de combien de temps il prend les fonctions asynchrones). C'est à l'inverse de la fonction synchrone, qui exécute ses instructions avant de retourner une valeur.
Oui, Java NIO offre non-blocage des e/S via Sélecteur'. Aussi, Apache MINAest une mise en réseau-cadre, qui comprend également la non-blocage I/O. Une relative DONC, la question répond à cette question.
Il existe plusieurs excellents articles à propos de code asynchrone dans node.js:
En plus @L'Élite Monsieur, en réponse, le noeud ne fraie pas de fils pour asynchronous I/O fonctions. Le tout sous le nœud s'exécute dans un à thread unique boucle d'événement de. C'est pourquoi il est vraiment important d'éviter synchronisé versions de certaines fonctions d'e/S, sauf si absolument nécessaire, comme
fs.readSync
Vous pouvez lire cet excellent billet de blog pour un aperçu: http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
Que j'enquêtais sur la même question depuis ce async IO modèle était très nouveau pour moi. J'ai trouvé cette discussion sur infoq.com qui m'a rendu très heureux. Le gars explique très bien où async IO réside effectivement (l'OS -> le noyau) et la façon dont il est intégré dans la node.js le principal idiome pour faire des IO. Profitez-en!
http://www.infoq.com/presentations/Nodejs-Asynchronous-IO-for-Fun-and-Profit
node.js permet au programmeur de ne asynchrone IO en forçant l'utilisation de rappels. Maintenant, les rappels sont semblables à la vieille asynchrone fonctions que nous avons pu l'utiliser pendant une longue période pour gérer les événements DOM en javascript!
par exemple,
De https://en.wikipedia.org/wiki/Asynchronous_I/O
Synchrone à blocage I/O
Une approche simple pour I/O serait de commencer à l'accès, puis attendez qu'elle se termine.
Serait de bloquer la progression du programme, tandis que la communication est en cours, laissant les ressources du système d'inactivité.
Asynchronous I/O
Alternativement, il est possible de démarrer la communication, puis effectuer un traitement qui ne nécessite pas que l'I/O d'être terminé.
Toute tâche qui dépend de l'I/O ayant terminé ... doit encore attendre pour l'opération d'e/S, qui est toujours bloqué,
mais d'autres traitements qui n'ont pas une dépendance sur l'opération d'e/S peut continuer.
Exemple:
https://en.wikipedia.org/wiki/Node.js
Node.js a un événement driven architecture capable de asynchronous I/O