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

Duda respecto a threading y Events #199

Open
5 tasks done
panchouc opened this issue Sep 14, 2022 · 1 comment
Open
5 tasks done

Duda respecto a threading y Events #199

panchouc opened this issue Sep 14, 2022 · 1 comment
Assignees
Labels
Contenidos Dudas sobre contenidos

Comments

@panchouc
Copy link

Prerrequisitos

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

  • Leí las reglas del foro (Instalación py 3.11.X con X>=7 Syllabus#1).
  • Busqué en las issues si ya preguntaron mi duda y no encontré nada parecido (https://github.com/IIC2233/syllabus/issues).
  • Mi duda no se trata de un tema administrativo o personal, ya que en ese caso debo contactar a mi profe, al Jefe de Bienestar o al correo del curso (iic2233@ing.puc.cl).
  • Utilizaré un título descriptivo y llenaré correctamente esta plantilla.
  • De ser necesario, colocaré código simple que permita explicar mi problema o duda.

Duda

Tengo una duda respecto a cuando esperamos a que un cierto evento ocurra. Si bien sé que es con el método wait(), ¿Cómo se cuando debo ocupar clear() o no?. Esto debido a que a veces se nos pide explícitamente que ocupemos ese método, entonces ahí no hay ninguna duda de que hay que utilizarlo, pero en el caso que nos digan que tenemos que esperar ese evento y no nos dicen nada respecto a clear(), ¿Cómo saber si debo usar el clear() o no una vez llegó la señal?. De antemano gracias, saludos.

@MrNachoX MrNachoX self-assigned this Sep 15, 2022
@MrNachoX
Copy link

Hola @panchouc !
clear() se usa para resetear un Event después de la llamada a set(). Generamente se utiliza cuando se quiere usar el mismo Event varias veces, o en otras palabras cuando el evento ocurre varias veces.

Por ejemplo, imagina que tienes un evento e y un thread llamó a e.wait(). Ahora este thread queda pausado esperando a que el Event active la señal correspondiente. Luego, si algún otro thread llama a e.set() la flag interna del Event cambia a True y el thread que estaba esperando (junto con cualquier otro que haya llamado a e.wait()) deja de esperar y continua con su ejecución. A partir de este momento si otro thread llama a e.wait() este no esperará nada y se continuará ejecutando porque el Event "ya se activó". Para evitar esto y que el event se pueda volver a usar, es necesario resetear la flag interna del event a False usando e.clear(), asi el Event queda en su estado original. Esto también está explicado más detalladamente en los contenidos de la semana 5.

Espero que te haya quedado más claro. Quedo atento por si quedan dudas.

@MrNachoX MrNachoX added the Contenidos Dudas sobre contenidos label Sep 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Contenidos Dudas sobre contenidos
Projects
None yet
Development

No branches or pull requests

2 participants