📄 subject_63903.htm
字号:
<p>
序号:63903 发表者:badboy 发表日期:2003-12-07 13:05:21
<br>主题:如何控制一个指定的线程在指定的时间内工作?
<br>内容:/*在控制台程序下,如何能控制一个线程,让该线程执行一个固定时间后,就结束!比如,下面的主线程产生了一个线程hThrd,我想让主线程等那个hThrd线程执行固定的一段时间后,主线程就强行结束那个hThrd线程。如果在windows下,用计时器好象可以实现计时,但这是控制台下。怎么办,我在那个线程里做点手脚?<BR> */<BR> <BR>#include <stdio.h><BR>#include <stdlib.h><BR>#include <windows.h><BR>#include <iostream.h><BR>HANDLE hevent;<BR>DWORD shijian;<BR>DWORD shijian1;<BR>DWORD WINAPI ThreadFunc(LPVOID);<BR>int main()<BR>{<BR> HANDLE hThrd;<BR> DWORD threadId;<BR> hevent=CreateEvent(NULL,FALSE,FALSE,NULL);<BR> hThrd = CreateThread(NULL,<BR> 0,<BR> ThreadFunc,<BR> (LPVOID)3,<BR> 0,<BR> &threadId );<BR> if(WaitForSingleObject(hevent,INFINITE)==WAIT_TIMEOUT)<BR> {<BR> cout<<"we need to kill thread!";<BR> //kill 那个线程!<BR> }<BR> CloseHandle(hThrd);<BR> return EXIT_SUCCESS;<BR>}<BR>DWORD WINAPI ThreadFunc(LPVOID n)<BR>{<BR> shijian=GetTickCount();<BR> for(;;)<BR> {<BR> if((GetTickCount()-shijian)==50)<BR> break;<BR> }<BR> return 0;<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:dsadsdas 回复日期:2003-12-07 16:39:01
<br>内容:你的WaitForSingleObject的第二个参数,不要用INFINITE,用一个特定的时间。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-07 16:49:38
<br>内容:上面的程序我改一下!<BR>#include <stdio.h><BR>#include <stdlib.h><BR>#include <windows.h><BR>#include <iostream.h><BR>HANDLE hevent;<BR>DWORD shijian;<BR>DWORD shijian1;<BR>DWORD WINAPI ThreadFunc(LPVOID);<BR>int main()<BR>{<BR> HANDLE hThrd;<BR> DWORD threadId;<BR> hevent=CreateEvent(NULL,FALSE,FALSE,NULL);<BR> hThrd = CreateThread(NULL,<BR> 0,<BR> ThreadFunc,<BR> (LPVOID)3,<BR> 0,<BR> &threadId );<BR> if(WaitForSingleObject(hevent,INFINITE)==WAIT_OBJECT_0)<BR> {<BR> cout<<"i am main thread ,sub thread is over!";<BR> <BR> }<BR> CloseHandle(hThrd);<BR> return EXIT_SUCCESS;<BR>}<BR>DWORD WINAPI ThreadFunc(LPVOID n)<BR>{<BR> shijian=GetTickCount();<BR> do<BR> {<BR> cout<<"ok,this thread is running!"<<endl;<BR> }while((GetTickCount()-shijian)<=2000); <BR> /*这里设置我们希望该线程执行多少时间!我先假定2秒. 我这里还是需要用到了循环,实际上,这个循环吃掉了我们的CPU很多时间。不过,没有办法,我想不出其他方法了!*/<BR> SetEvent(hevent);<BR> return (DWORD)n * 10;<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-12-08 09:09:15
<br>内容:使用作业!代码就算了,自己看书吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-08 14:56:49
<br>内容: 哎呀呀! 你倒是说说清楚! 我没有听过作业编程!<BR><BR> 还是请麻烦一下,大概说说原理,我到哪去找这方面资料?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:微笑的撒旦 回复日期:2003-12-09 11:29:43
<br>内容:有本《windows核心编程》你可以参考。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -