En mi extensión Tcl, un hilo secundario está llenando la cola de eventos Tcl con eventos; los eventos contienen indicadores de estructuras con un tiempo de vida dinámico.

¿Cuál es la estrategia correcta para garantizar que no permanezcan en la cola de eventos eventos con punteros colgantes a estructuras desasignados? Puedo evitar que el hilo secundario cree nuevos eventos; actualmente llamo a Tcl_DoOneEvent(TCL_DONTWAIT) en un bucle hasta que devuelve 0 (es decir, la cola de eventos está vacía) después de asegurarme de que no se puedan crear nuevos eventos y antes de desasignar la estructura.

¿Es esa la forma correcta de hacerlo?

En una nota relacionada, no estoy seguro del propósito de Tcl_ThreadAlert(): si esto es necesario después de cada llamada a Tcl_ThreadQueueEvent(), ¿por qué no se incluye la alerta en Tcl_ThreadQueueEvent()?

Finalmente, mi código no llama a Tcl_CreateEventSource(), ya que no parece necesitar una configuración ni un procedimiento de verificación, ya que hay un segundo hilo involucrado. ¿Es eso motivo de preocupación?

0
user1254127 23 oct. 2019 a las 12:07

1 respuesta

La mejor respuesta

En el primer punto, eso me parece bien. Es muy parecido a ejecutar update en el nivel TCL.

No estoy seguro sobre el segundo punto, ya que no es parte de la API que he explorado mucho. Podría ser así para permitir que se programen múltiples eventos por notificación, o porque hay otros usos para la llamada, pero realmente no lo sé.

En el tercer punto, suena bien. Creo que nunca necesitas fuentes de eventos especiales solo para enviar mensajes entre hilos.

1
Donal Fellows 27 oct. 2019 a las 07:56