簡體   English   中英

事件隊列清理

[英]Event queue cleanup

在我的 Tcl 擴展中,輔助線程正在用事件填充 Tcl 事件隊列; 這些事件包含指向具有動態生命周期的結構的指針。

什么是確保沒有帶有指向已釋放結構的懸空指針的事件保留在事件隊列中的正確策略? 我可以阻止輔助線程創建新事件; 目前我在循環中調用Tcl_DoOneEvent(TCL_DONTWAIT)直到它返回 0 (即事件隊列為空)之后確保不能創建新事件並在取消分配結構之前。

這是正確的方法嗎?

在相關說明中,我不確定Tcl_ThreadAlert()的目的:如果每次調用Tcl_ThreadQueueEvent()后都需要這樣做,為什么Tcl_ThreadQueueEvent() () 中不包含警報?

最后,我的代碼沒有調用Tcl_CreateEventSource() ,因為它似乎不需要設置或檢查過程,因為涉及到第二個線程。 這值得擔心嗎?

在第一點上,這對我來說似乎沒問題。 這很像在 TCL 級別運行update

我不確定第二點,因為它不是我探索過很多的 API 的一部分。 這可能是允許每個通知安排多個事件的方式,或者因為呼叫還有其他用途,但我真的不知道。

第三點,聽起來不錯。 我認為您永遠不需要特殊的事件源來進行線程間消息傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM