Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[OffTopic] Cómo se podrían escalar Threads para un servidor real? #1302

Open
Christian-Klempau opened this issue Jul 4, 2020 · 4 comments
Assignees
Labels
general resuelto Issues resueltas

Comments

@Christian-Klempau
Copy link

Hola! Fuera del tema de la tarea, estaba tratando de entender cómo funcionarían los locks de los threads en un servidor real, con muchísimas conexiones en paralelo. Si tuviera, digamos, 10.000 conectados, hacer un lock cada vez que alguien se conecta me imagino que volvería todo el sistema muy lento. Hay alguna otra manera de abordar el problema? En internet no encontré mucho que hablara del tema. Muchas gracias!

@KnowYourselves KnowYourselves self-assigned this Jul 4, 2020
@KnowYourselves
Copy link
Contributor

Hola @Christian-Klempau!

En primer lugar te recomiendo leer este artículo que en general explica locks mucho mejor de lo cual yo voy a poder hacer en este breve texto.

La respuesta a tu pregunta es, uno tiende a usar locks lo menos posible y solo en las secciones críticas. Por ejemplo, aceptar una nueva conexión no es una sección crítica. Si después de aceptar una conexión tienes que modificar un recurso compartido, entonces sí. En general los locks solo deben ser usados en pequeñas secciones de lógica que podría resultar erronea si fuera realizada por múltiples threads a la vez.

Espero se entienda!

@Christian-Klempau
Copy link
Author

Gracias por la info! Le daré una lectura :)
Al final el problema también sería de alguna manera optimizar el lock en sí para que sólo use la sección crítica y nada más?

@KnowYourselves
Copy link
Contributor

Exactamente. Uno no usa muchos Locks y tampoco los usa por muchas lineas. Por ejemplo, no vas a tener 15 locks cada uno sobre procesos de 200 líneas cada uno, solo se usa para las acciones atómicas importantes.

En todo caso, a menos que estés haciendo una aplicación a muy bajo nivel, o busques tener completo control sobre el estado de un servidor, es raro que uno maneje locks de un servidor a gran escala a mano. El caso realista es que utilizas un servicio que ya tiene implementada esa lógica.

@Christian-Klempau
Copy link
Author

Perfecto, lo que tú mencionas tiene mucho sentido. Gracias por la info! :)

@fdoflorenzano fdoflorenzano added the resuelto Issues resueltas label Jul 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
general resuelto Issues resueltas
Projects
None yet
Development

No branches or pull requests

3 participants