¿Cómo se manejan los eventos de nodo? ¿Uno a la vez o concurrente?El acceso simultáneo a la matriz compartida es un problema en Node.js
necesito saber, si no va a ser el acceso simultáneo a una matriz común, como en el siguiente ejemplo:
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);
Cuando un cliente se conecta, su zócalo es empujado a la matriz. Cuando la conexión está cerrada, quiero eliminarla de la matriz de conexiones.
Pero, en otros idiomas, esto podría generar problemas de simultaneidad.
Fx. Si dos conexiones está cerrado al mismo tiempo:
- Conexión A encuentra su zócalo en el índice de 4
- Conexión B encuentra su zócalo en el índice de 5
- Conexión A borra a sí mismo de índice 4
- Conexión B se borra del índice 5 (pero ahora es el índice 4)
¿Será esto un problema, o puedo asumir que solo se maneja una devolución de llamada a la vez?