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

Uso de Locks y item en pauta #503

Open
7 tasks done
SantiagoDLCB opened this issue Jun 18, 2023 · 5 comments
Open
7 tasks done

Uso de Locks y item en pauta #503

SantiagoDLCB opened this issue Jun 18, 2023 · 5 comments
Assignees
Labels
Tarea 3 Dudas sobre la T3

Comments

@SantiagoDLCB
Copy link

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

Hola tengo una duda con la pauta porque hay un item en uso de sockets que dice:
"Las aplicaciones pueden trabajar concurrentemente sin bloquearse por escuchar un socket"
Lo que ocurre es que por lo que estuve viendo pickle no es 100% thread safe, entonces si por ejemplo implemento el bonus del tiempo y tengo un threads que le actualiza el tiempo constantemente al cliente y otro thread que actualiza el resto de eventos, entoces si es que dos threads llaman a pickle al mismo tiempo por algun motivo como que crashea. La solucion que encontre online consitia en el uso de locks de manera que el servidor solo pueda mandar un mensaje a la vez y por lo tanto los clientes puedan escuchar un solo mensaje a la vez, pero no se si eso me reduciria el puntaje en este item, o no se refiere a eso?

@SantiagoDLCB SantiagoDLCB added the Tarea 3 Dudas sobre la T3 label Jun 18, 2023
@SantiagoDLCB
Copy link
Author

El error es pickle.UnpicklingError: unpickling stack underflow. Se que este error ya esta en otras issues pero cree esta porque no se si la solucion es valida dado la pauta

@MelanyLillo
Copy link

MelanyLillo commented Jun 18, 2023

Hola!

Los profesores hablaron y llegaron a la siguiente resolución: no deben implementar lock en el tema de recibir, sino que solamente en las zonas criticas. En particular, pickle no es thread safe, entonces habría que usar lock cada vez que se serialice o deserialice un mensaje.

Avísame si se respondió tu duda🤗

@MelanyLillo MelanyLillo self-assigned this Jun 18, 2023
@SantiagoDLCB
Copy link
Author

Osea que si implemento un lock para el pickle como practicamente no se nota la diferencia en tiempo que eso porduce, entonces no habra problema?

@SantiagoDLCB
Copy link
Author

SantiagoDLCB commented Jun 19, 2023

No entiendo porque seria para recibir mensajes por que cuando uno hace recv lo hace sobre el socket del cliente en especifico que uno quiere escuchar, entonces no seria necesario. Ademas que si le pongo un lock al recv entonces los threads de escuchar clientes se vuelven inutiles porque solo podria escuchar a un cliente a la vez y mientras ese uno no mande un mensaje, el resto tampoco podra hacerlo. Por ejemplo si le pongo un lock al recv solo 1 cliente podria apretar el boton comenzar y el resto no

@MelanyLillo
Copy link

Hola! Acabo de actualizar la respuesta, gracias por hacernos ver ese error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Tarea 3 Dudas sobre la T3
Projects
None yet
Development

No branches or pull requests

2 participants