c语言线程问题 ( 积分: 50 )

  • 主题发起人 主题发起人 liangbowen
  • 开始时间 开始时间
L

liangbowen

Unregistered / Unconfirmed
GUEST, unregistred user!
main(){
...
handle = (HANDLE) _begin
thread(ThreadProc,0,val);
WaitForSingleObject(handle,INFINITE);
printf("Input your command: ");
gets(command);
...
}
我建立了线程后,必须等到ThreadProc运行完毕以后才能运行后面的gets, 有没有什么办法可以让线程建立以后可以不用等待线程完成,立即接着往下运行的呢?
 
main(){
...
handle = (HANDLE) _begin
thread(ThreadProc,0,val);
WaitForSingleObject(handle,INFINITE);
printf("Input your command: ");
gets(command);
...
}
我建立了线程后,必须等到ThreadProc运行完毕以后才能运行后面的gets, 有没有什么办法可以让线程建立以后可以不用等待线程完成,立即接着往下运行的呢?
 
main(){
...
handle = (HANDLE) _begin
thread(ThreadProc,0,val);
//WaitForSingleObject(handle,INFINITE);
去掉
printf("Input your command: ");
gets(command);
...
}
 
去掉那个连线程都不运行了,直接运行下面的了。
 
main(){
...
handle = (HANDLE) _begin
thread(ThreadProc,0,val);
printf("Input your command: ");
gets(command);
WaitForSingleObject(handle,INFINITE);

...
}
换个位置,你主线程都结束了,程序就结束了,当然你的其他的线程都会停止
 
我主线程后面还有一个while循环呢,每sleep一秒就打印一句,但我始终看不到线程的运行。
换了位置的确是可以运行gets先,但我后面还有要运行的阿。可不可以并行运行。
 
main(){
...
handle = (HANDLE) _begin
thread(ThreadProc,0,val);
printf("Input your command: ");
gets(command);

...
WaitForSingleObject(handle,INFINITE);
}
换成这样就可以了
 
main(){
...

for(i=0;i<n;i++){
handle = (HANDLE) _begin
thread(ThreadProc,0,val);
}
printf(&quot;Input your command: &quot;);
gets(command);
...
while(1){
printf(&quot;wait for 1 sec...&quot;);
Sleep(1000);
}
for(i=0;i<n;i++){
WaitForSingleObject(handle,INFINITE);
}
}
这样WaitForSingleObject不是相当于没写吗?
 
多人接受答案了。
 
后退
顶部