Quand est-ce que le pool de threads utilisés?

J'ai donc une compréhension de la façon dont Node.js œuvres: il a un seul thread d'écoute qui reçoit un événement, puis délègue à un pool de travail. Le thread de travail informe l'auditeur une fois qu'il termine le travail, et l'auditeur puis renvoie la réponse à l'appelant.

Ma question est: si je me lève d'un serveur HTTP Node.js et d'appeler le sommeil sur un de mes acheminé chemin événements (tels que "/test/sommeil"), l'ensemble du système est livré à une halte. Même le seul thread d'écoute. Mais ma compréhension est que ce code se passe sur le pool de travail.

Maintenant, par contre, quand j'utilise la Mangouste de parler à MongoDB, DB lectures sont une coûteuse opération d'e/S. Nœud semble être en mesure de déléguer le travail à un fil et recevoir le rappel lorsqu'elle est terminée; le temps nécessaire pour charger à partir de la DB ne semble pas bloquer le système.

Comment Node.js décidez d'utiliser un thread du pool vs le thread d'écoute? Pourquoi ne puis-je pas écrire le code d'événement qui dort et seuls les blocs d'un thread du pool?

  • J'ai vu qu'. Ça ne fonctionne toujours pas répondu à ma question. Si le travail a été sur un autre thread, le sommeil ne toucherait que le fil et de ne pas l'auditeur ainsi.
  • Une véritable question, où vous essayez de comprendre quelque chose par vous-même, et quand vous ne pouvez pas trouver la sortie du labyrinthe, vous demander de l'aide.
InformationsquelleAutor Haney | 2014-03-25