In che modo vengono gestiti gli eventi di gestione dei nodi? Uno alla volta o simultaneo?L'accesso simultaneo all'array condiviso è un problema in Node.js
Ho bisogno di sapere, se ci sta per essere l'accesso simultaneo a una matrice comune, come nel seguente esempio:
var ws = require("./ws.js"),
connections = [];
ws.createServer(function(socket){
// add to connection array
socket.on('connect', function(){
connections.push(socket);
});
// remove from connection array
socket.on('close', function(){
var i = connections.indexOf(socket);
connections.splice(i,1);
});
}).listen(8000);
Quando un client si connette, il suo zoccolo viene spinto alla matrice. Quando la connessione è chiusa, voglio rimuoverlo dalla matrice di connessioni.
Tuttavia, in altre lingue ciò potrebbe causare problemi di concorrenza.
Fx. Se due connessioni è chiuso allo stesso tempo:
- Connection trova la sua presa nell'indice 4
- Connection B trova la sua presa nell'indice 5
- Connection si elimina dall'indice 4
- Connection B si cancella dall'indice 5 (ma è ora indice 4)
Questo sarà mai un problema o posso supporre che venga gestita una sola callback alla volta?