unknown 发表于 2012-4-19 19:48:06

请问可以在定时器回调函数中直接删除定时器吗?

如题:
请问可以在定时器回调函数中直接删除定时器吗?

ffxz 发表于 2012-4-20 08:00:12

不可以。如果是soft timer,则可以。

unknown 发表于 2012-4-20 13:15:57

ffxz 发表于 2012-4-20 08:00 static/image/common/back.gif
不可以。如果是soft timer,则可以。

谢谢,请问为什么硬件定时器中断中不可以定时器呢?

ffxz 发表于 2012-4-20 15:33:30

因为删除一个定时器会释放相应的内存,而为了保证多线程环境下安全释放,会事先获得一个锁。如果这个锁已经被其他线程获取,讲导致当前上下文挂起。但是“硬”定时器操作是在OS Tick中断上下文中执行,是属于中断上下文,所以会有问题的。

unknown 发表于 2012-4-21 09:19:24

ffxz 发表于 2012-4-20 15:33 static/image/common/back.gif
因为删除一个定时器会释放相应的内存,而为了保证多线程环境下安全释放,会事先获得一个锁。如果这个锁已经 ...

谢谢您的解答,我明白了,不好意思,让您见笑了

ffxz 发表于 2012-4-21 10:24:33

unknown 发表于 2012-4-21 09:19 static/image/common/back.gif
谢谢您的解答,我明白了,不好意思,让您见笑了

:-) 不用客气,不懂就问呗
页: [1]
查看完整版本: 请问可以在定时器回调函数中直接删除定时器吗?