我在Visual Studio 2010 for Windows桌面中使用C ++。
到目前为止,我认为排队定时器是我完美的解决方案。我有一个队列计时器从一个工作线程中分离出来。它无法暂停到SleepEx()
所以Waitable Timers不是一个选项。我为每个定时器传递一个在堆上分配的参数,然后在完成定时器proc后释放。
这是我的问题:如果我因任何原因需要取消计时器,我如何解除参数?我可以杀死计时器,当然,但如果它已经过去了,并且已经排队但尚未执行呢?我怎么能肯定地知道我可以将我的论证释放到那个计时器而不用担心它执行和访问(现已释放)的内存?
一位同事建议设置一个标志,让所有计时器都运行而不取消它们。如果设置了标志,则释放内存并返回。如果没有,请正常运行计时器proc。这对我来说效率低下(是的,好的,不优雅的)所以我希望这里有人有不同的想法。