d******i 发帖数: 7160 | 1 VC6的Code.不断用WaitForSingleObject刺探一下?
就没别的法子了? (消息循环除外) |
p***o 发帖数: 1252 | 2 你可以用APC,不用事先知道要等啥object,就是要偶尔用SleepEx
之类的函数alert一下。
http://msdn.microsoft.com/en-us/library/ms684954(VS.85).aspx
【在 d******i 的大作中提到】 : VC6的Code.不断用WaitForSingleObject刺探一下? : 就没别的法子了? (消息循环除外)
|
d******i 发帖数: 7160 | 3 还是要在Code的不同部位各放置一次这样的Check?
那和Event这类的内核对象有何区别?
当然,除了不需要指明等啥之外.
俺的意思是
A.Check很多次.很Ugly.
B.有时程序员也不清楚到底该在哪儿放置这样的Check.
这是WholePoint.
就没有生命一次,全过程适用的办法吗?
【在 p***o 的大作中提到】 : 你可以用APC,不用事先知道要等啥object,就是要偶尔用SleepEx : 之类的函数alert一下。 : http://msdn.microsoft.com/en-us/library/ms684954(VS.85).aspx
|
X****r 发帖数: 3557 | 4 把你的耗时函数放到别的线程去做,主线程继续处理事件。
【在 d******i 的大作中提到】 : 还是要在Code的不同部位各放置一次这样的Check? : 那和Event这类的内核对象有何区别? : 当然,除了不需要指明等啥之外. : 俺的意思是 : A.Check很多次.很Ugly. : B.有时程序员也不清楚到底该在哪儿放置这样的Check. : 这是WholePoint. : 就没有生命一次,全过程适用的办法吗?
|
d******i 发帖数: 7160 | 5 概念上该是这样.是清楚.
问题是如何Decent地停掉那个耗时线程.
让它自己Aware吧,问题如OP:在哪儿Aware(CheckForEvent),要Check多少回?
想省事等着被主线程干掉吧,耗时线程声明的新对象新Mem怎么被释放?
还是麻烦啊.
【在 X****r 的大作中提到】 : 把你的耗时函数放到别的线程去做,主线程继续处理事件。
|
t****t 发帖数: 6806 | 6 pthread_cancel, but be ware the mandatory cancellation point functions
or make the computation thread respond (sigprocmask) to a specific signal,
then use kill to signal the process itself.
or use tkill to signal the thread directly (linux only).
the signal handler does not need to
stop the thread right away.
【在 d******i 的大作中提到】 : 概念上该是这样.是清楚. : 问题是如何Decent地停掉那个耗时线程. : 让它自己Aware吧,问题如OP:在哪儿Aware(CheckForEvent),要Check多少回? : 想省事等着被主线程干掉吧,耗时线程声明的新对象新Mem怎么被释放? : 还是麻烦啊.
|
P********e 发帖数: 2610 | 7
这个函数一直在等,除非object signaled
什么是一直刺探
如果简单的话,可以用critical section
【在 d******i 的大作中提到】 : VC6的Code.不断用WaitForSingleObject刺探一下? : 就没别的法子了? (消息循环除外)
|
p***o 发帖数: 1252 | 8
其实问题的本质就是如果不check怎么在暴力退出的时候优雅的释放资源。
你可以学习OS,把分配的资源记在一张表里,暴力退出后由其他线程释放。
如果你的程序能在发生c++异常的时候自动释放资源,你也可以试试用
SuspendThread之类的东西插入一个c++异常。这个大概符合你的要求,
就是太麻烦太丑陋。
【在 d******i 的大作中提到】 : 还是要在Code的不同部位各放置一次这样的Check? : 那和Event这类的内核对象有何区别? : 当然,除了不需要指明等啥之外. : 俺的意思是 : A.Check很多次.很Ugly. : B.有时程序员也不清楚到底该在哪儿放置这样的Check. : 这是WholePoint. : 就没有生命一次,全过程适用的办法吗?
|
O*******d 发帖数: 20343 | 9 This is the best solution. You call SleepEx on every cycle of your loop.
Any external event will get almost immediate attention.
【在 p***o 的大作中提到】 : 你可以用APC,不用事先知道要等啥object,就是要偶尔用SleepEx : 之类的函数alert一下。 : http://msdn.microsoft.com/en-us/library/ms684954(VS.85).aspx
|
I*****y 发帖数: 602 | 10 Xenstar的解决办法也很好。另外其一个线程做耗时的计算。
论简单易行的话,可能直接sleepEx好一些。
【在 O*******d 的大作中提到】 : This is the best solution. You call SleepEx on every cycle of your loop. : Any external event will get almost immediate attention.
|