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