В моем расширении Tcl вторичный поток заполняет очередь событий Tcl событиями;события содержат указатели на структуры с динамическим временем жизни.
Какова правильная стратегия для обеспечения того, чтобы в очереди событий не осталось событий с висячими указателями на нераспределенные структуры? Я могу помешать вторичному потоку создавать новые события;в настоящее время я вызываю Tcl_DoOneEvent(TCL_DONTWAIT)
в цикле до тех пор, пока она не вернет 0 (т. е. очередь событий пуста), убедившись, что новые события не могут быть созданы, и перед отменой выделения структуры.
Это правильный способ сделатьэто?
В соответствующей заметке я не уверен в цели Tcl_ThreadAlert()
: если это необходимо после каждого вызова Tcl_ThreadQueueEvent()
, почему предупреждение не включено в Tcl_ThreadQueueEvent()
?
Наконец, мой код не вызывает Tcl_CreateEventSource()
, так как не требуется ни настройки, ни процедуры проверки, поскольку задействован второй поток. Это повод для беспокойства?