Comment écrire un code thread safe dans node.js

Voici une partie de mon application.js:

var connections = []; function removeConnection(res) { var i = connections.indexOf(res); if (i !== -1) { connections.splice(i, 1); } } 

Et j'appelle removeConnection lorsqu'une demande est fermée:

 req.on('close', function () { console.log("connection closed"); removeConnection(res); }); 

Je me demande si le code ci-dessus est sécurisé par thread? Je veux dire que Node.js est généré par un événement, le scénario suivant est-il possible?

  1. Les connexions sont [a, b, c]
  2. ThreadB calls removeConnection
  3. In threadB.removeConnection: i = 1
  4. ThreadA calls removeConnection
  5. In threadA.removeConnection: i = 0
  6. In threadA.removeConnection: connections.splice (0, 1); => Les connexions sont [b, c]
  7. In threadA.removeConnection: connections.splice (1, 1); => Les connexions sont [b]

Comme vous le voyez dans ce scénario, la connexion de threadC serait supprimée au lieu de threadB's.

Cela peut-il se produire? Si oui, alors, comment puis-je réparer le code?

L'un des principes clés de Node.js est que tout le code utilisateur s'exécute dans un seul thread qui élimine la nécessité pour le développeur de faire face aux complexités de l'écriture du code thread-safe.

Donc, votre code (et tout code Node.js) est par définition thread-safe.