在我的 Tcl 扩展中,辅助线程正在用事件填充 Tcl 事件队列;这些事件包含指向具有动态生命周期的结构的指针。
什么是确保没有带有指向已释放结构的悬空指针的事件留在事件队列中的正确策略?我可以阻止辅助线程创建新事件;目前我Tcl_DoOneEvent(TCL_DONTWAIT)
在确保不能创建新事件和取消分配结构之前调用一个循环,直到它返回 0(即事件队列为空)。
这是正确的方法吗?
在相关说明中,我不确定的目的Tcl_ThreadAlert()
:如果每次调用后都需要这样做Tcl_ThreadQueueEvent()
,为什么不包含警报Tcl_ThreadQueueEvent()
?
最后,我的代码没有调用Tcl_CreateEventSource()
,因为它似乎不需要设置或检查过程,因为涉及第二个线程。这值得担心吗?