阅读:1301回复:13
arthurtu:我已给你分了,我还有问题想向你请教!
谢谢arthurtu的回答,虽然没有太大帮助,但还是要给分,我现在想用多线程来解决此问题,但遇到一个新问题,就是:
如何终止这个新开线程? 我在新线程中采用如下代码: while(!bTerminate) { ....... } 然后在主线程中希望通过变化bTerminate的值来使其退出循环,可就是不能退出,通过softice观察,发现bTerminate值似乎改变不了, 是何原因,该如何解决呢? |
|
沙发#
发布于:2002-08-01 20:54
对于多线程的东西,最好不要按你这种方式写,可以用临界区或者事件什么的。
|
|
板凳#
发布于:2002-08-02 09:11
多谢,由于在DS中不知如何建立事件,还望提供一些帮助!
|
|
地板#
发布于:2002-08-02 09:15
谢谢arthurtu的回答,虽然没有太大帮助,但还是要给分,我现在想用多线程来解决此问题,但遇到一个新问题,就是: 这个我也遇到过,本来是想check到一个event然后将一个bool值置位,推出线程的,但是就是不行,最后只好使用teminatethread将线程kill了,你可以试试。 |
|
|
地下室#
发布于:2002-08-02 09:20
谢谢回答,我在主线程中曾尝试通过m_thread.Terminate()语句来实现,可每运行到此处时,系统总是挂起,不知zydcat是如何实现的?
|
|
5楼#
发布于:2002-08-02 09:33
谢谢回答,我在主线程中曾尝试通过m_thread.Terminate()语句来实现,可每运行到此处时,系统总是挂起,不知zydcat是如何实现的? 用这个 BOOL TerminateThread( HANDLE hThread, // handle to thread DWORD dwExitCode // exit code ); |
|
|
6楼#
发布于:2002-08-02 09:43
faint!我回答的什么呀?好没有面子的说。
只在app层的话,用临界区比较好点。 |
|
7楼#
发布于:2002-08-02 10:37
应该是在驱动层,还想请问zydcat,TerminateThread在DS中该如何实现呢,我使用的是DS1.2.
|
|
8楼#
发布于:2002-08-02 10:39
你要在驱动中作多线程,不是吧。
|
|
|
9楼#
发布于:2002-08-02 14:00
驱动中不是可以另开一个系统线程的吗?
|
|
10楼#
发布于:2002-08-02 14:03
用PsCreateSystemThread
PsTerminateSystemThread不可以吗? |
|
11楼#
发布于:2002-08-02 14:07
你的bTerminate是global的?!
考虑放到device extension去,把device extenstion当参数给你的thread。 在thread,比如: while(!pDevExt->bTerminate) { .... } |
|
12楼#
发布于:2002-08-02 18:38
谢谢arthurtu
你所说的是在DDK下的实现方法,可我现在用的是DS,不知DS下是否一样,如有什么高见,还望不吝赐教。 |
|
13楼#
发布于:2002-08-02 20:11
不会driverwork的东东。
其实他也只是封装了DDK而已。 |
|